一時トークンを使用して Amazon Simple Storage Service (Amazon S3) バケットの署名付き URL を作成しましたが、指定した有効期限より前に URL が失効しました。原因は何でしょうか? 有効期限がより長い署名付き URL を作成する方法を教えてください。
一時トークンを使用して署名付き URL を作成した場合、トークンが有効期限切れになると、URL は失効します。URL の有効期限がより長い場合でも失効します。
署名付き URL の作成に使用できる認証情報には以下が含まれます。
- AWS Identity and Access Management (IAM) インスタンスプロファイル: 最大 6 時間有効
- AWS Security Token Service (STS): 最大 36 時間有効 (AWS アカウントユーザーや IAM ユーザーの認証情報など、永続的認証情報を使用して署名した場合)
- IAM ユーザー: 最大 7 日間有効 (AWS 署名バージョン 4 を使用した場合)
最大 7 日間有効の署名付き URL を作成するには、まず、使用する SDK への IAM ユーザー認証情報 (アクセスキーとシークレットアクセスキー) を指定します。次に、AWS 署名バージョン 4 を使用して署名付き URL を生成します。
たとえば、Boto 3 を使用して署名付き URL を作成するには、以下のステップに従います。
1. Boto 用の IAM ユーザー認証情報を設定します。
2. 次のコードスニペットを編集して実行し、S3 オブジェクトで使用する署名付き URL を作成します。
import boto3 from botocore.client import Config # Get the service client with sigv4 configured s3 = boto3.client('s3', config=Config(signature_version='s3v4')) # Generate the URL to get 'key-name' from 'bucket-name' # URL expires in 604800 seconds (seven days) url = s3.generate_presigned_url( ClientMethod='get_object', Params={ 'Bucket': 'bucket-name', 'Key': 'key-name' }, ExpiresIn=604800 ) print(url)
警告: IAM ユーザーを削除した場合やアクセスキーとシークレットアクセスキーを無効にした場合は、署名付き URL が期限前に失効します。