tabimoba.net

とあるエンジニアの雑記帳

PHPのAWS-SDKからIAMロールを使用する方法

PHPのAWS-SDKからIAMロールを仕様する方法です。ググっても適切な情報がなかなか見つからなかったので書きました。

対応

IAMロールを利用する場合は、インスタンス作成時にprofileを渡さない。(書かない) →profileを書いているとIAMロールではなく、実行環境のcredentials(を含め実行ユーザーのホームディレクトリの.awsディレクトリ以下のファイル)が参照されるところがハマりどころです。

コード例

IAMロールを利用する場合は、$accessKeyId$secretAccessKey は空の状態とします。

<?php
$accessKeyId = '<AWS IAMアクセスキーID>';
$secretAccessKey = '<AWS IAMシークレットアクセスキー>';

// configのデフォルト
$config = [
  'version' => 'latest',
  'region' => 'ap-northeast-1',
  'profile' => 'default'
];

// AccessKeyとSecretAccressKeyがない場合は、IAMロールを使用する
if (empty($awsAccessKeyId) && empty($awsSecretAccessKey)) {
  // IAMロール認証の場合はprofileをセットしない(unsetする)
  unset($config['profile']);
}

$lambda = new \Aws\Lambda\LambdaClient($config);

参考