設定
IDプールがクライアントに渡すロールのポリシー設定を下記のようにすると、"IDプールが発行するID名のフォルダ" 配下にしかアクセスできなくなる。
※フォルダという表現は正確ではないけど、良い言い方がないので・・
CognitoのIDプールが渡すロールのポリシー設定
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::backetname/${cognito-identity.amazonaws.com:sub}/*"
}
]
}
クライアント側でのID取得方法(Amplify想定)
const currentCredentials = await Auth.currentCredentials();
const identityId = currentCredentials.identityId;
// 取得されるIDは下記の形式(リージョン以降は、ユーザプールの sub 属性の値)
// ap-northeast-1:12345678-abcd-1234-abcd-12345678abcd
結果
↓のパスにしかアクセスできない。
bucketname/ap-northeast-1:12345678-abcd-1234-abcd-12345678abcd/
アクセスできる例:
bucketname/ap-northeast-1:12345678-abcd-1234-abcd-12345678abcd/aaaa.txt
bucketname/ap-northeast-1:12345678-abcd-1234-abcd-12345678abcd/bbbb.txt
アクセスできない例:
bucketname/ap-northeast-1:98765432-zzzz-zzzz-zzzz-12345678abcd/aaaa.txt