Lambda関数で自分自身の環境変数を更新する
2021/08/07
Twitterでツイート検索するAPIを試してみるでツイートの取得を重複させないようにmax_idとsince_idを使います。
since_idをどこで持つのが一番面倒じゃないかなと考えて、「そうだLambdaの環境変数に持たせればLambda関数で完結する」と思ってやってみました。
boto3のupdate_function_configurationでできました。
考慮事項としては、既存の環境変数そのものの上書きなので、既存の環境変数も設定してあげないとです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
secret_name = os.environ.get('SECRET_NAME') level = os.environ.get('LOG_LEVEL', 'ERRO') since_id = os.environ.get('TWITTER_SINCE_ID', 0) def update_environ(function_arn, since_id): lambda_client = boto3.client('lambda') response = lambda_client.update_function_configuration( FunctionName=function_arn, Environment={ 'Variables': { 'TWITTER_SINCE_ID': since_id, 'SECRET_NAME': secret_name, 'LOG_LEVEL': level } } ) update_environ( context.invoked_function_arn, tweet['search_metadata']['max_id_str'] ) |
IAMロールにはUpdateFunctionConfigurationアクションのみ許可しました。
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "lambda:UpdateFunctionConfiguration", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:TwitterSearch" } ] } |
で、ここまでやって思ったのですが、環境変数の更新できるのって$latestだけですよね。
これから本番稼働させるにあたり、バージョンとエイリアス作ってエイリアスを実行するとなるとアウトじゃないですかと。
ということで、パラメータはSystems Manager Parameter Storeですよねと。
当たり前な結論に至りました。
ということで次回は「LambdaからParameter Storeを使う」です。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。


開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
S3オブジェクトへのリクエストをCloudTrail, Athenaで識別する(パーティショニング)
Amazon S3オブエジェクトへのリクエストをCloudTrail, Athe …
-
-
特定AWSアカウント特定リージョンのCloudFormationスタックを削除するLambda(Python)
やりたいこと 特定アカウント内特定リージョン内のCloudFormationスタ …
-
-
EC2 Instance Connect向けのセキュリティグループのソースにプレフィックスリストを
EC2 Instance Connect、便利ですね。 キーペア不要で、EC2イ …
-
-
Amazon VPCのAmazonProvidedDNSとほかメモ
VPCユーザーガイドのAmazon DNS について理解するの記載内容について実 …
-
-
Amazon S3オブジェクトロック
S3のオブジェクトロックを確認しました。 オブジェクトロックの有効化 現在、既存 …
-
-
AWS VPC ネットワークACLでHTTP(80)のみ許可する
ユーザーガイドのカスタムネットワーク ACLのうち、HTTP(80)を許可する設 …
-
-
JAWS-UG Osaka 第14回勉強会 「DIY」 〜自社内システムを作る側からの物申す〜に参加、運営、登壇しました
先日、JAWS-UG Osaka 第14回勉強会 「DIY」 〜自社内システムを …
-
-
PyCharmにAWS CloudFormationプラグインをインストールして入力補完してみる
JetBrainsのPython統合開発環境(IDE)のPyCharmを1年ちょ …
-
-
Route 53 の加重ラウンドロビンルーティングでロードバランサー
Route 53の加重ラウンドロビンで両方1に設定してみました。 上図はイメージ …
-
-
AWS WAFをSIEM on Amazon OpenSearch Serviceで可視化
SIEM on Amazon OpenSearch Serviceを構築の環境に …