curlの--aws-sigv4オプションについて

curl には 7.75.0から --aws-sigv4 というオプションが追加されています。 オプション自体の存在は知っていたものの使ったことはありませんでした。 OpenSearchやLambda Function URLsでURL自体はパブリックであるが、IAM認証をかけているケースの疎通確認で試しに使ってみたら便利だったため、備忘録として残しておきます。

例えば、東京リージョンに存在するOpenSearchに対してアクセスする場合は以下のような形式でリクエストで送ることで AWS Signature V4で署名することができます。

curl "{endpoint}" --aws-sigv4 "aws:amz:ap-northeast-1:es" -H "X-Amz-Security-Token: ${AWS_SESSION_TOKEN}" --user "${AWS_ACCESS_KEY_ID}:${AWS_SECRET_ACCESS_KEY}"

IAMロールのような一時的なクレデンシャルではなく、IAMユーザーの永続化したクレデンシャルを使ってアクセスする場合は、-H "X-Amz-Security-Token: ${AWS_SESSION_TOKEN}"を省いてリクエストすれば良いです。

aws-vaultユーザーを使っている方は aws-vault exec でサブシェルを起動すると環境変数にクレデンシャルがセットされるのでより捗ります。

合わせて読みたい