teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

追加修正

2020/11/17 09:18

投稿

212Yuichi
212Yuichi

スコア15

title CHANGED
File without changes
body CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  ×lambda関数でboto3を利用してEC2を起動した場合、同様にshellが起動しpythonスクリプトが実行されるが、
20
20
   この場合はなぜかdynamoDBアクセスの処理でエラーとなって止まっている
21
-  (エラーメッセージはなく、後続処理がされないことで特定済み
21
+  (エラーメッセージ「An error occurred (AuthFailure) when calling the DescribeInstances operation: AWS was not able to validate the provided access credentials」
22
22
 
23
23
  ### 該当のソースコード
24
24
 

2

質問内容の修正・加筆

2020/11/17 09:18

投稿

212Yuichi
212Yuichi

スコア15

title CHANGED
File without changes
body CHANGED
@@ -1,19 +1,25 @@
1
1
  ### 前提・実現したいこと
2
- AWS EC2インスタンス起動時にpythonスクリプトを起動する処理を組み込みたいが、
2
+ lambda関数でboto3を利用しEC2インスタンス起動時に「dynamoDBにアクセスするpythonスクリプト実行したい
3
- その中でdynamoDBにアクセスする処理があるとうまく起動しない状態を解消したい
4
3
 
5
4
 
6
5
 
7
- AWS lambdaにて指定のEC2インスタンスを起動(boto3ec2.start_instances()で起動)した
6
+ AWS lambdaにて指定のEC2インスタンスを起動(lambda関数4行目処理)したとき
8
- EC2インスタンスの /etc/init.d に設定しているshellからpythonスクリプトを自動起動する処理を
7
+ EC2インスタンスの /etc/init.d に設定しているshellからpythonスクリプトを実行する処理を組み込もうとしています。
9
- 設定しています。そのpythonスクリプトの中でdynamoDBにアクセスしているのですが、
10
- 権限設定がうまくいっていないのかpythonスクリプトが自動起動してくれません。
11
- (dynamoDBアクセス部分をコメントアウトすると想定通りに動きます)
12
8
 
9
+ pythonスクリプトをEC2起動時に実行することは成功しているのですが、pythonの中で dynamoDBにアクセスする処理が
10
+ あるとそこでエラーとなっていて後続処理が行われず困っています。
11
+
12
+
13
13
  ### 発生している問題・エラーメッセージ
14
14
 
15
+ 〇実現できていること
16
+  cloud9でEC2を起動し、ターミナルで「/etc/init.d/app_start start」(shell起動コマンド)を実行すると、
15
- dynamoDBアクセスする処理るpythonスクリプトをEC2起動時に自動実行できようにしたい
17
+  dynamoDBへのアクセス処理っても問題なく後続処理まで実行され
16
18
 
19
+ ×lambda関数でboto3を利用してEC2を起動した場合、同様にshellが起動しpythonスクリプトが実行されるが、
20
+  この場合はなぜかdynamoDBアクセスの処理でエラーとなって止まっている
21
+  (エラーメッセージはなく、後続処理がされないことで特定済み)
22
+
17
23
  ### 該当のソースコード
18
24
 
19
25
  ■lambda関数
@@ -24,6 +30,9 @@
24
30
  ec2.start_instances(InstanceIds=[instance]) # instanceに所定のinstanceid を設定
25
31
  ```
26
32
 
33
+
34
+ 以下、EC2内の設定ファイル
35
+
27
36
  ■起動shell (/etc/init.d/app_start)
28
37
 
29
38
  ```shell
@@ -72,8 +81,7 @@
72
81
  ### 試したこと
73
82
 
74
83
  ・起動shell内で ec2-user で実行するようにしないとうまく動かなかったので su -l ec2-user -c している。
75
- cloud9でEC2立ち上げ「/etc/init.d/app_start start」すると、うまく動くが、lambdaら上記の通り
84
+ 以下の通り様々なポリシーロールに設定しlambda、EC2に割り当てみたが、うまく動かない。
76
-  実行したときはうまく動かない
77
85
 
78
86
  lambda関数、該当のEC2インスタンスにはそれぞれ以下のポリシーを付与したIAMロールを設定している
79
87
 
@@ -83,7 +91,6 @@
83
91
  ・CloudWatchLogsFullAccess
84
92
  ・AmazonSSMFullAccess
85
93
 
86
-
87
94
  ■EC2インスタンス
88
95
  ・AmazonEC2FullAccess
89
96
  ・AmazonEC2RoleforSSM
@@ -95,4 +102,9 @@
95
102
 
96
103
  ### 補足情報(FW/ツールのバージョンなど)
97
104
 
98
- ・AWS Amazon linux
105
+ ・AWS Amazon linux
106
+
107
+
108
+ lambda関数からboto3を使った場合の権限とcloud9でEC2内で直接shell実行したときとで
109
+ 実行権限が何か違ってエラーとなっているのではないかと思っていますが、次の一手がなく困っています。
110
+ 何か解決策になりそうなものがございましたら、ご教示頂けると幸いです。

1

質問内容の編集・加筆

2020/11/17 06:50

投稿

212Yuichi
212Yuichi

スコア15

title CHANGED
File without changes
body CHANGED
@@ -83,6 +83,7 @@
83
83
  ・CloudWatchLogsFullAccess
84
84
  ・AmazonSSMFullAccess
85
85
 
86
+
86
87
  ■EC2インスタンス
87
88
  ・AmazonEC2FullAccess
88
89
  ・AmazonEC2RoleforSSM