アプリケーションをデプロイする人に特定のLambda関数だけにはアクセスできないようにするには、ResourceでLambda関数を指定してDenyするIAMポリシーを作成してIAMロールにアタッチし、このLambda関数の編集や実行を許可する以外のIAMユーザーにIAMロールをアタッチすると実現できる。面倒だが。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Deny", "Action": "lambda:*", ★アクションを絞るとさらにきめ細かい制御が可能 "Resource": [ "arn:aws:lambda:ap-northeast-1:123456789012:function:lambdaFunction1", "arn:aws:lambda:ap-northeast-1:123456789012:function:lambdaFunction2" ] } ] }
2018/12/4(追記):
以下のようにワイルドカードを使うことも可能。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Deny", "Action": "lambda:*", "Resource": [ "arn:aws:lambda:ap-northeast-1:123456789012:function:admin*" ] } ] }
関数のリストは表示されるが、中身は参照も変更もできない。