前提
AWS SDK for Java 2.0 開発者ガイド
そして今回使おうとしているもの。
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<aws.java.sdk.version>2.11.12</aws.java.sdk.version>
</properties>
<!-- 中略 -->
<dependencies>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>bom</artifactId>
<version>${aws.java.sdk.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>ecs</artifactId>
<version>${aws.java.sdk.version}</version>
</dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>ssm</artifactId>
<version>${aws.java.sdk.version}</version>
</dependency>
</dependencies>
インストール
AWS CLI をインストールする。
Installing the AWS CLI version 2 on Windows
設定ファイルと認証情報ファイルの設定
C:\Users(username).aws 以下にファイルがあることを確認。
[default]
aws_access_key_id=(自身のaccess_key_id)
aws_secret_access_key=(自身のsecret_access_key)
[default]
region=ap-northeast-1
output=json
認証準備
MFAデバイスの割り当て でMFAの設定を行う。
MFAを設定後は、logout -> 再login をして初めてコンソール上で様々のサービスの確認・操作ができる。コンソール上でEC2などの情報が見られるか、権限を確認する。
MFA認証を用い、一時認証ユーザーを生成
MFA トークンを使用して、AWS CLI 経由で AWS リソースへのアクセスを認証する方法を教えてください。
The ARN in AWS for an SMS device, such as arn:aws:iam::123456789012:sms-mfa/username
The ARN in AWS for a virtual device, such as arn:aws:iam::123456789012:mfa/username
これはつまり以下のようなこと。
C:\Users\works>aws sts get-session-token --serial-number arn:aws:iam::123456123456:mfa/yourid@yourmail.co.jp --token-code (MFAの数字6ケタ)
{
"Credentials": {
"AccessKeyId": "ASIA************",
"SecretAccessKey": "p8j****************************",
"SessionToken": "**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************",
"Expiration": "2020-06-17T19:08:08+00:00"
}
}
こうしてCredentialsを獲得できる。
デバッグ
[AWS CLIの設定切替方法と、AWS_DEFAULT_PROFILEとAWS_PROFILEの違いについて] (https://qiita.com/shonansurvivors/items/1fb53a2d3b8dddab6629)が分かりやすかった。
aws configure --profile プロファイルの名前
とある通り、テスト用プロファイル eclipse
を作成してみる。
C:\Users\works>aws configure --profile eclipse
AWS Access Key ID [None]: (CredentialのAccess Key ID)
AWS Secret Access Key [None]: (CredentialのSecret Access Key)
Default region name [None]: ap-northeast-1
Default output format [None]: json
これで
~/.aws/credentials
~/.aws/config
が更新されていることを確認する。
今回はこの状態で、Eclipse の実行時環境変数に
AWS_PROFILE=eclipse
をセットする。
無事ローカルでJavaプログラムが動いたー。
関連: AWS SDK 1, 2の共存など、細かいメモ