私は最近How to allow invoking an AWS Lambda function only from EC2 instances inside a VPCについて質問を投稿しました。 "AWSラムダロール"ポリシーを持つIAMロールをEC2インスタンスに添付することでそれを稼働させることができました。これで、boto3を使用してラムダ関数を呼び出すことができます。Python asyncioでEC2インスタンスからAWS Lambda関数を呼び出す方法
ここで、asyncio await構文を使用して、ラムダ関数を非同期に呼び出したいと思います。ラムダ関数はInvokeType='Event'
を設定して非同期バージョンを提供していますが、実際には関数の結果を得ることなく呼び出しを即座に返します。
この関数には時間がかかるので、私は多くの関数を同時に起動したいと思いますが、関数が戻るのを待っている間に実行をブロックしないようにしたいと思います。
私はaiobotocoreを使用しようとしましたが、これは基本的な 's3'サービス機能のみをサポートしています。
これを解決する最善の方法は、AWS APIゲートウェイサービスを使用して、aiohttpを使用して簡単に処理できるGET/POSTリクエストを介してラムダ関数を呼び出すことです。
しかし、私はそれを動作させることはできません。
import requests
r = requests.get('https://url_to_api_gateway_for_function')
私が禁止応答<Response [403]>
を得る:
私はEC2 IAMロールにポリシー「AmazonAPIGatewayInvokeFullAccess」が、私はしようとするたびに追加しました。
ラムダ関数でトリガを直接使用してAPIゲートウェイを作成しました。
また、APIパス設定にポストメソッドを追加して、 "AWS_IAM"認証を設定し、それを "prod"デプロイメントとしてデプロイするようにしました。それと同じ禁止された応答。私はそれを "APIゲートウェイのテスト画面でテストすると、うまくいきます"。
これを修正する方法はありますか?私はいくつかのステップを欠いていますか?
http://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started.html#getting-started-prerequisites 'あなたが使用したり、管理ポリシーをカスタマイズすることができますAWSLambdaFullAccess(arn:aws:iam :: aws:policy/AWSLambdaFullAccess)を添付してIAMユーザーに添付してください。 – mootmoot
このチュートリアルを試しましたが、** AWS_IAM **をAPI ... EC2からそれをオンにするとすぐに、私はEC2インスタンスのポリシーAWSLambdaFullAccessを使用していましたが、403レスポンスを取得します... – Bertone
AWS_IAM認可とは何ですか? – mootmoot