GitHub Actionsに権限を与えるためにまずIAMのポリシーとロールを作成しないといけない。
下記gemini
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowS3Sync",
"Effect": "Allow", <- S3へのファイル操作を許可
"Action": [
"s3:PutObject", <- S3へのアップロード権限
"s3:ListBucket", <- S3へのファイル一覧の取得権限
"s3:DeleteObject" <- S3への削除権限
],
"Resource": [
"arn:aws:s3:::<YOUR_BUCKET_NAME>", <- ListBucket操作は、このバケット自体に対して行われます。
"arn:aws:s3:::<YOUR_BUCKET_NAME>/*" <- PutObjectやDeleteObject操作はこちらに適用されます。
]
},
{
"Sid": "AllowCloudFrontInvalidation",
"Effect": "Allow", <- クラウドフロントの操作を許可
"Action": "cloudfront:CreateInvalidation", <- キャッシュクリアの権限
"Resource": "arn:aws:cloudfront::<YOUR_AWS_ACCOUNT_ID>:distribution/<YOUR_CLOUDFRONT_DISTRIBUTION_ID>" <- クリアするディストリビューションの指定
}
]
}
次にIDプロバイダーを作る
プロバイダータイプがOpenID Connect
プロバイダーのURLがhttps://token.actions.githubusercontent.com
対象者がsts.amazonaws.com
次にロールの作成
ウエブアイデンティティを選択して
IDプロバイダーは作成したやつを選択
Audienceはsts.amazonaws.com
GitHubの情報は自分のやつを入れる
そのロールのARNをGitHubのActions secrets / New secretに入れる
今回はS3とcloudfront使いたかったのでバケット名やディストリビューション名もシークレットに入れるといいらしい
今回は知識がないのでyamlの作成はAIにお願いした