Java経由でAWSにアクセスするために使用しているクレデンシャルのアクセスキーにユーザー名を付ける方法はありますか?[ IAMユーザー]セクションで定義されているユーザー名を取得して、ユーザー固有のバケット/フォルダーを設定し、アクセスキーのユーザー名に基づいてスクリプトを動的にポイントできるようにしたいと思います(変更できるように将来、必要に応じて、バケット/フォルダ名を変更せずにキーにアクセスします)。
2 に答える
もう一度、私は自分の質問に答えています...他の人にそれを行う方法を尋ねると、私はいつも自分で答えるのが得意なようです...
とにかく、現在使用しているアクセス資格情報のユーザー名を抽出できる以下のコードがあります。
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.PropertiesCredentials;
import com.amazonaws.services.identitymanagement.AmazonIdentityManagementClient;
public class test {
private static AmazonIdentityManagementClient iamServ;
private static void init() throws Exception {
AWSCredentials credentials = new PropertiesCredentials(test.class.getResourceAsStream("AwsCredentials.properties"));
iamServ = new AmazonIdentityManagementClient(credentials);
}
public static void main(String[] args) throws Exception {
init();
String theUser = iamServ.getUser().toString().substring(27);
int userNameEnd = theUser.indexOf(",");
String userName = theUser.substring(0, userNameEnd);
System.out.println(userName);
}
}
実行は大雑把ですが、機能します。または少なくとも私が試した例ではそうです。を使用するだけの場合System.out.println(iamServ.getUser());
、ユーザー名は次のように表示されます。
{User: {Path: /, UserName: UserName, UserId: xxxxxxxxxxxxxxxxxxxxxx, Arn: arn:aws:iam::xxxxxxxxxxx:user/UserName, CreateDate: Day Mon DayNum hr:min:sec Tmz Year, }, }
それ以外の場合、示されているコードは、文字列内のすべての余分な「ジャンク」ではなく、UserNameを返します。とにかく、これが現在のアクセスIDのユーザー名を取得するための解決策を探しているかもしれない他の誰かに役立つことを願っています。誰かが別のより良い方法を知っているなら、コメントで知らせてください。
Java の AWS Access Credentials からユーザー名を取得するより優れた方法を見つけました。前述の回答は、その時点で他の解決策が提供されていなかったため、簡単な回避策でした。この新しいメソッドは、実際にはAWS SDK for Javaの一部です(元の投稿の時点では含まれていなかった可能性があります)。
とにかく、ユーザー名を取得するには、次の行を使用します。
iamServ.getUser().getUser().getUserName();
これは、変数に格納できる文字列を返します。なぜ彼らがそれを設定したのか正確にはわからないので、.getUser()
2回電話する必要がありますが、彼らはそうしました. 2 番目以降に使用できるその他の方法には.getUser()
、.getUserID()
、.getArn()
、.getPath()
、および があり.getCreateDate()
ます。
注:古い回答はまだ機能するため残していますが、これがより良い解決策になりました。