はじめに
2021/7/26 のアップデートで S3 アクセスポイントに対してバケットスタイルのエイリアスが自動生成されるようになりました。S3 バケット名のかわりにエイリアスを使用してアクセスポイント経由のデータ操作を行うことができます。
新規のアクセスポイントだけではなく既存のアクセスポイントに対しても払い出されています。
AWS CLI の例
通常の S3 バケットのように高レベルコマンドを使用してアクセスポイントを使用できます。
- エイリアスを使わない場合は API レベルコマンドを使用する必要がある
aws s3api get-object --key test.txt --bucket arn:aws:s3:ap-northeast-1:123456789012:accesspoint/access-point-test test.txt
- エイリアスを使用する場合は高レベルコマンドを利用可能
aws s3 cp s3://access-point-test-aqfqprnstn7aefdfbarligizwgyexample-s3alias/test.txt test.txt
S3 アクセスポイントとは
1つの S3 バケットに対して複数のユーザーやアカウントからのアクセスが必要な場合、それぞれのアクセス許可レベルをコントロールする単一のバケットポリシーが必要です。アクセスするユーザーやアプリケーションが増えるにつれてバケットポリシーが複雑になり、テストや変更等が難しくなります。
S3 アクセスポイントは 1 つの S3 バケットに対し用途ごとのアクセスポイント作成し、個別にアクセスポイントポリシーを定義できる便利機能です。
何が嬉しいのか
S3 アクセスポイントの難点として、CLI や SDK 経由で接続する際にはアクセスポイントの ARN を指定する必要がありました。エイリアスを使用するとあたかも通常の S3 バケットのようにアクセスできるので、これまで以上に簡単にアクセスポイントを扱えるようになります。
冒頭の AWS CLI の例ですとちょっと効果がわかりにくいかもしれませんが、SDK を使用する独自アプリケーションや 3rd Party アプリケーションの場合、これまではアプリ側の改修が必要になる場合があり、アクセスポイントを正式にサポートしていないものも多かったと思います。エイリアスを使用することでこれらのアプリケーションでも特別な対応なしに S3 アクセスポイントが使用可能になります。
同様に EMR や Storage Gateway、Athena といった AWS サービスからのアクセスに対しても S3 アクセスポイントを使用できるようになります。
制限事項
以下は 2021/8/5 時点でドキュメントに記載のある S3 アクエスポイントエイリアスの制限事項です。
- ユーザー自身でエイリアスを作成することはできない
- 作成されたエイリアスを削除、変更、無効化することはできない
- 一部の S3 データプレーン操作 に対してアクセスポイントエイリアスを使用することができる
- S3 コントロールプレーンの操作にアクセスポイントのエイリアス名を使用することはできない
- 以下のサービスでは使用できない
- IAM ポリシー
- S3 サーバーアクセスログの宛先
- CloudTrail の宛先
- SageMaker GroundTruth および SageMaker Feature Store
- Redshift の UNLOAD コマンド
Object Lambda アクセスポイントは?
S3 Object Lambda は S3 に対する GET リクエストをトリガーに Lambda 関数を起動し、データがアプリケーションに返されるときにデータの内容を変更および処理できる機能です。
S3 Object Lambda を使用するには 既存の S3 アクセスポイントを関連付けた Object Lambda アクセスポイントを使用する必要があります。
リクエストを行う際もバケット名ではなく、Object Lambda アクエスポイントの ARN を指定する必要があるため、同じようにエイリアスが使用できると非常に便利なわけですが、今回のリリースでは Object Lambda アクセスポイントはサポート対象外 でした。Object Lambda アクセスポイントに対してはエイリアスは作成されません。
参考
- S3 アクセスポイントエイリアスのドキュメント
以上です。
参考になれば幸いです。