web-dev-qa-db-ja.com

AWS一時認証情報の更新

AWSの認証プロセスを使用して、認証、MFAステップを実行し、1時間有効な資格情報を付与します。通常、これらは~/.aws/credentialsに配置されます。ただし、aws s3 cp ...を介して大きなファイルをコピーするなど、長時間実行されるawscli操作を実行すると、認証情報が期限切れになり、コマンドが正常に完了しません。

コマンドを再実行して~/.aws/credentialsを再認証し、再入力を試みましたが、進行中のコマンドはこれを「認識」せず、元の資格情報が期限切れになっても失敗します。

これはどのように処理されることになっていますか?

1
Fred Clausen

いくつかのオプションがあります...


より長いセッション期間

最大セッション期間を12時間に設定できます。これは、長時間実行するタスクには十分な場合があります。

credentials validity

一時的な認証情報を取得する方法がわからない場合は、セッションの継続時間を12時間に設定する必要があり、一部のツールはデフォルトで1時間有効なトークンをリクエストします。

また、ワークフローを容易にする get-credentials script も確認してください。たぶん、あなたが今何をしているのか正確にはわかりませんが、~/.aws/credentialsに一時的なクレデンシャルを書き込むことは、通常、ベストプラクティスではありません。


最初にEC2にコピー

最大継続時間の設定を大きくできない場合は、次の方法で制限を回避できる可能性があります。

  1. 最初にcopyingデータをEC2インスタンスにコピーします。 rsyncを使用します。

  2. 次に、インスタンスを利用してEC2アップロードからS3EC2インスタンスロール 自動的に更新されます。 EC2からS3へのコピーに加えてはより高速です


ローカルでEC2資格情報を使用する

EC2ロールの認証情報を「盗み取り」、ローカルで使用することもできます。この get-instance-credentials スクリプトを確認してください。

[ec2-user@ip-... ~] ./get-instance-credentials
export AWS_ACCESS_KEY_ID="ASIA5G7...R3KG5"
export AWS_SECRET_ACCESS_KEY="bzkNi/9YV...FDzzd0"
export AWS_SESSION_TOKEN="IQoJb3JpZ2Lux2VjEKf....PUtXw=="

これらの資格は通常6時間有効です

次に、これらの行をローカルの非EC2マシンにコピーして貼り付けます。

user@server ~ $ export AWS_ACCESS_KEY_ID="ASIA5G7...R3KG5"
user@server ~ $ export AWS_SECRET_ACCESS_KEY="bzkNi/9YV...FDzzd0"
user@server ~ $ export AWS_SESSION_TOKEN="IQoJb3JpZ2Lux2VjEKf....PUtXw=="

資格情報が機能することを確認します。

user@server ~ $ aws sts get-caller-identity
{
    "UserId": "AROAIA...DNG:i-abcde123456",
    "Account": "987654321098",
    "Arn": "arn:aws:sts::987654321098:assumed-role/EC2-Role/i-abcde123456"
}

ご覧のように、ローカルの非EC2サーバーには、認証情報を取得したEC2インスタンスと同じ権限があります。


aws CLIを使用してファイルをmultipart-uploadします

大きなファイルを小さなチャンクに分割し( split manページを参照)、aws s3api multipart-uploadサブコマンドを使用できます。 aws s3api create-multipart-uploadcomplete-multipart-uploadpart-uploadをご覧ください。資格情報の途中で期限が切れた場合は、各パーツ間の資格情報を更新し、失敗したパーツを再試行できます。


カスタムスクリプトを作成する

ブリリアント boto3 Python AWS SDKライブラリを使用して、独自のファイルアップローダーを構築できます。 MFAの要求を含め、有効期限が切れるたびに新しい資格情報を要求します。


ご覧のとおり、多くのオプションがあります。

それが役に立てば幸い:)

1
MLu