web-dev-qa-db-ja.com

DevOps:Terraformを使用したAWS Lambda .Zip

AWSでLambda関数を作成するためにTerraformを作成しました。これには、my pythonコードを圧縮したコードを指定します。コマンドラインからテックボックスに実行すると、すべてうまくいきます。Teraformの適用アクションでは、ZipがAWSに移動し、ラムダの作成に使用されます。

コードの重要なセクション:

resource "aws_lambda_function" "meta_lambda" {
              filename = "get_resources.Zip"
              source_code_hash = filebase64sha256("get_resources.Zip")
              .....

これを他の環境に導入するには、Azure DevOpsを介してTerraformをプッシュする必要があります。ただし、DevOpsでビルドしようとすると、次のようになります。

エラー:リソース「aws_lambda_function」「meta_lambda」のmain.tf行140の関数呼び出しでのエラー:140:source_code_hash = filebase64sha256( "get_resources.Zip")関数「filebase64sha256」の呼び出しに失敗しました:get_resources.Zipにファイルが存在しません。

リポジトリ内の.Zipを見ることができるので、ここに重要な概念が欠けているように感じます-ビルドでどのように見つけられないのか理解できませんか?

私が間違っていることについてのヒント/手がかりはありがたいです。

enter image description here

3
SimonB

チャップス、私はここで私の頭上にいたのではないかと心配です-terraformとDevOpsの新機能!
私たちの(より多くの)技術者と一緒にWordを持っていて、彼らはこれを分類しました。

失敗したのは、Tar TerraformステップがZipファイルをアーティファクトに含めるために別のコマンドラインを使用する必要があるためです。 tar -cvpf terraform.tar .terraform 。tf tfplan tar --recursion -cvpf terraform.tar --exclude = ' /。git' --exclude = '。gitignore'。

..それはあなたにとって何でも意味します!彼らが何をしても、それはうまくいきます!

これには恵みがあるので、入力に感謝しているので割り当てます。これが初心者のエラーの場合は申し訳ありません。

1
SimonB

ドキュメントの例によると、_source_code_hash_引数では、filebase64sha256 ("get_resources.Zip")を二重引用符で囲む必要があります。

enter image description here

詳細はこちら ドキュメント を参照してください。

0
Hugh Lin - MSFT