[解決済み] AccessDeniedException: User is not authorized to perform: lambda:InvokeFunction
質問
ノードからラムダ関数を呼び出そうとしています。
var aws = require('aws-sdk');
var lambda = new aws.Lambda({
accessKeyId: 'id',
secretAccessKey: 'key',
region: 'us-west-2'
});
lambda.invoke({
FunctionName: 'test1',
Payload: JSON.stringify({
key1: 'Arjun',
key2: 'kom',
key3: 'ath'
})
}, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
});
キーはIAMユーザーのものです。このユーザは
AWSLambdaExecute
と
AWSLambdaBasicExecutionRole
のポリシーが添付されています。
パーミッションエラーが発生するのですが。
AccessDeniedException: User: arn:aws:iam::1221321312:user/cli is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:us-west-2:1221321312:function:test1
ドキュメントといくつかのブログを読みましたが、このユーザーにラムダ関数を呼び出すことを許可することができません。どうすればこのユーザーにラムダを起動させることができるでしょうか?
どのように解決するのですか?
この
AWSLambdaExecute
と
AWSLambdaBasicExecutionRole
では、エラーで表現されているようなパーミッションは提供されません。これらのマネージドポリシーは、どちらもLambda関数自体に付けることを想定しているので
を実行します。
をこれらのポリシーで実行します。
nodejsプログラムを実行しているユーザーには、Lambda関数を起動する権限がないというエラーです。
IAMユーザーに
lambda:InvokeFunction
パーミッションを与える必要があります。
- IAM管理コンソールでUserを探し、クリックします。
- "Permissions"タブで、"Inline Policies" セクションを展開し、"click here" link to add a policy" をクリックします。
- カスタム ポリシーを選択します。
- ポリシーに名前を付けます。何でもかまいません。
- このポリシーを[ポリシー ドキュメント]フィールドに入力します。
ポリシーのサンプルです。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1464440182000",
"Effect": "Allow",
"Action": [
"lambda:InvokeAsync",
"lambda:InvokeFunction"
],
"Resource": [
"*"
]
}
]
}
このポリシーでは、ラムダメソッドを呼び出すためのメソッドを両方とも入れています。
更新しました。
という名前の IAM Managed Policy も存在するようになりました。
AWSLambdaRole
という名前の IAM Managed Policy があり、IAM ユーザーまたは IAM ロールに割り当てることができます。これにより、必要なパーミッションが与えられるはずです。
関連
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み】AWS STS AssumeRoleへのアクセスを可能にする方法
-
[解決済み] テスト
-
[解決済み] (node:63208) DeprecationWarning: collection.ensureIndex は非推奨です。代わりにcreateIndexesを使用してください [重複]。
-
[解決済み】モジュール '@babel/core' が見つかりません。
-
[解決済み】Node.jsのホスト名/IPが証明書のaltnamesと一致しない。
-
[解決済み】nodemon - app crashed - waiting for file changes before start
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] npm install エラー - ローカルの発行者証明書を取得できません。
-
[解決済み] "致命的なエラーです。grunt "コマンドを実行すると、"Unable to find local grunt. "と表示されます。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み】「安全なTLS接続が確立される前にクライアントのネットワークソケットが切断されました」(ノード10
-
[解決済み】Google spreadsheet api Requestに不十分な認証スコープがあった。
-
[解決済み】モジュール 'internal/util/types' が見つかりません。
-
[解決済み】「npm install」と「npm rebuild」の違いとは?
-
[解決済み] Expectアサーションの型エラー -> expect(...).toExistは関数ではない
-
[解決済み] AWS s3 api error: specified bucket does not exist.
-
[解決済み] nodejs - http.requestでresponse.writeを使用する場合、第一引数は文字列またはBufferでなければなりません。
-
[解決済み] node.jsのセットアップウィザードが途中で終了してしまう
-
[解決済み] DynamoDBで一括削除するにはどうしたらいいですか?