AWS Cloud9
ユーザーガイド

AWS Cloud9 Integrated Development Environment (IDE) で AWS Lambda 関数を操作する

AWS Cloud9 IDE を使用して、AWS Lambda 関数および関連する Amazon API Gateway API を AWS Cloud9 開発環境 で操作できます。たとえば、以下のことが可能です。

  • 環境 から新しい関数を作成します。また、関数のローカルバージョンを Lambda にアップロードし、必要に応じて新しい関数をサポートする追加の AWS リソースを同時に作成します。

  • 環境 で関数とその関連 API を実行およびデバッグします。関数と API の実行は 環境 内で完結します。

  • 環境 でリモートバージョンの関数とその関連 API を実行します。リモートバージョンの実行は Lambda および API Gateway 内で完結します。

  • Lambda 内の既存の関数を 環境 にインポートし、関数とその関連 API の実行とデバッグ、コードの編集、またはその両方を実行できるようにします。

  • 関数コードのローカルバージョンに加えた変更を、Lambda のリモートバージョンにアップロードします。

このトピックでは、既に Lambda について知っていることを前提としています。詳細については、AWS Lambda Developer Guideを参照してください。

注記

この手順を完了すると、AWS アカウントに料金が発生する可能性があります。これらには Lambda、API Gateway などのサービスや、AWS サーバーレスアプリケーションモデル (AWS SAM) でサポートされる AWS のサービスで発生する可能性のある料金が含まれます。詳細については、「AWS Lambda 料金表」、「Amazon API Gateway 料金表」、および「クラウドサービスの料金表」を参照してください。

Lambda 関数を使用するための準備

AWS Cloud9 IDE で Lambda 関数を使用する前に、次のステップを完了しておく必要があります。

ステップ 1: 必要なアクセス権限を持つ IAM グループをセットアップする

AWS 認証情報が AWS アカウントの IAM 管理者ユーザーに関連付けられており、このユーザーを使用して Lambda 関数を操作する場合は、「ステップ 2: AWS アクセス認証情報を使用して 環境 を設定する」までスキップします。

それ以外の場合は、次の手順に従って IAM コンソールで AWS 管理ポリシー (AWSLambdaFullAccessAmazonAPIGatewayAdministratorAmazonAPIGatewayInvokeFullAccess) と別の追加のインラインポリシーを、ユーザーが属する IAM グループにアタッチします。

  1. AWS マネジメントコンソール にまだサインインしていない場合は、サインインします。

    このステップでは、AWS アカウントの IAM 管理者の認証情報を使用してサインインすることをお勧めします。これを実行できない場合は、AWS アカウントの管理者に確認してください。

  2. IAM コンソールを開きます。これを行うには、コンソールのナビゲーションバーで、[サービス] を選択します。次に、[IAM] を選択します。

  3. [グループ] を選択します。

  4. グループの名前を選択します。

  5. [アクセス許可] タブの [管理ポリシー] で [ポリシーのアタッチ] を選択します。

  6. ポリシー名のリストで、[AWSLambdaFullAccess]、[AmazonAPIGatewayAdministrator]、および [AmazonAPIGatewayInvokeFullAccess] の横にあるボックスを選択します。(いずれのポリシー名もリストに表示されない場合は、[検索] ボックスにポリシー名を入力して表示させます。)

  7. [ポリシーのアタッチ] を選択します。

  8. ZIP ファイル (Cloud9LambdaAccessGroup.zip) をローカルコンピュータにダウンロードします。次に、ダウンロードした ZIP ファイルから Cloud9LambdaAccessGroup.yaml という名前の AWS CloudFormation テンプレートファイルを抽出します。

  9. AWS CloudFormation コンソールを開きます。これを行うには、コンソールのナビゲーションバーで、[サービス] を選択します。次に、[CloudFormation] を選択します。

  10. [Create Stack] を選択します。

  11. [テンプレートの選択] ページの [テンプレートの選択] で、[テンプレートを Amazon S3 にアップロード] を選択します。[参照] を選択して、抽出した AWS CloudFormation テンプレートファイルを選択します。

  12. [次へ] を選択します。

  13. [詳細の指定] ページで、[スタックの名前] に、スタックの名前 (例: AWSCloud9LambdaAccessStack) を入力します。別の名前を使用する場合は、この手順全体でそれを置き換えてください。

  14. [パラメータ] で、[GroupName] に、アクセスポリシーをアタッチする先の AWS アカウント内の既存のグループ名を入力します。

  15. [次へ] を選択します。

  16. [オプション] ページで、[次へ] を選択します。([オプション] ページのデフォルト設定は変更しないでください。)

  17. [確認] ページで、[AWS CloudFormation によって IAM リソースが作成される場合があることを承認します] を選択します。

  18. [作成] を選択します。

[AWSCloud9LambdaAccessStack] スタックに [CREATE_COMPLETE] と表示されるまで待ちます。これにはしばらく時間がかかることがあります。しばらくお待ちください。

注記

AWS CloudFormation によってグループにアタッチされたアクセスポリシーは AWSCloud9LambdaGroupAccess という名前で、次のように定義されています。ここで ACCOUNT_ID はお客様の AWS アカウント ID です。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudformation:CreateChangeSet", "cloudformation:CreateStack", "cloudformation:DescribeChangeSet", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStacks", "cloudformation:ExecuteChangeSet", "cloudformation:ListStackResources", "cloudformation:UpdateStack", "iam:AttachRolePolicy", "iam:DetachRolePolicy", "iam:GetRole", "iam:GetUser", "iam:PassRole" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "iam:CreateRole", "iam:DeleteRole" ], "Resource": "arn:aws:iam::ACCOUNT_ID:role/cloud9-*", "Effect": "Allow" } ] }

ステップ 2: AWS アクセス認証情報を使用して 環境 を設定する

AWS Cloud9 IDE は AWS Cloud9 開発環境 の AWS Command Line Interface (AWS CLI) を使用して、Lambda および他のサポートされている AWS のサービスを操作します。したがって、環境 の AWS CLI は AWS アクセス認証情報にアクセスする必要があります。

環境 の AWS CLI をセットアップするには、以下のいずれかを実行します。

ステップ 3: Lambda 関数の実行ロールの作成

Lambda 関数で AWS リソースを使用した操作を行う場合は、関数で使用する必要なアクセス権限を含む IAM ロール (実行ロール) を指定する必要があります。

Lambda 関数を作成する際に、AWS Cloud9 で実行ロールを作成できます。この実行ロールには、AWS Lambda Developer Guide の「基本的な Lambda のアクセス権限」で説明されているアクセス権限が含まれています。

この実行ロールがニーズを満たさない場合は、Lambda 関数を作成する前に、独自に実行ロールを作成する必要があります。詳細については、以下を参照してください。

ステップ 4: 環境 を正しい AWS リージョンに設定する

特定の AWS リージョンを AWS Cloud9 開発環境 で使用するように設定する必要があります。このリージョンで、AWS アカウントの新しい Lambda 関数を作成したり、AWS アカウントの既存の Lambda 関数を AWS Cloud9 開発環境 にインポートしたりします。

目的:

  1. AWS Cloud9 IDE のメニューバーで、[AWS Cloud9]、[設定] の順に選択します。

  2. [設定] タブのナビゲーションペインで、[AWS Settings (AWS の設定)] を選択します。

  3. [AWS リージョン] で、使用する AWS リージョンを選択します。

ステップ 5: AWS リソースウィンドウの Lambda セクションを開く

これで AWS Cloud9 IDE を使用して Lambda 関数を操作する準備が整いました。これを行うには、[AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションを展開します (まだ展開していない場合)。


               [Lambda] セクションを表示する [AWS Resources (AWS リソース)] ウィンドウ

[AWS Resources (AWS リソース)] ウィンドウが非表示になっている場合は、[AWS Resources (AWS リソース)] ボタンを選択します。

[AWS Resources (AWS リソース)] ボタンが見つからない場合は、メニューバーで [Window]、[AWS Resources (AWS リソース)] の順に選択してボタンを表示させます。

サーバーレスアプリケーションウィザードを使用して Lambda 関数を作成する

AWS Cloud9 IDE を使用して新しい Lambda 関数を作成できます。前に設定した AWS リージョンで AWS アカウントに Lambda 関数が既に存在する場合は、「Lambda 関数をインポートする」までスキップします。

注記

この手順では、[サーバーレスアプリケーションの作成] ウィザードを使用して、AWS が所有する関数設計図に基づいて単一の Lambda 関数を作成する方法を説明します。複数の Lambda を同時に作成する、Lambda 関数とサポートするコンポーネントを同時に作成する、または AWS 以外のエンティティが所有する Lambda 関数を作成するには、「AWS Serverless Application Repository を使用して Lambda 関数を作成してデプロイする」までスキップしてください。

  1. [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションで、作成する関数を選択します。

    • 単一の関数を単独で作成するには、[Local Functions (ローカル関数)] の見出しをクリックします。

    • 関数を作成して、それを 1 つ以上の関数と関連 AWS リソースで構成される既存のグループに追加する (これをサーバーレスアプリケーションと呼びます) には、[Local Functions (ローカル関数)] のリストで、グループのサーバーレスアプリケーション (フォルダ内の Lambda アイコンで表されます) を選択します。

  2. 以下のいずれかの操作を行います。

    • [新しい Lambda 関数の作成] (Lambda アイコンのボタン) を選択します。

    • [Local Functions (ローカル関数)] の見出しまたは前に選択したサーバーレスアプリケーションのフォルダを右クリックして、[Create Here (ここに作成)] を選択します。

    
                  [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションを使用して新しい Lambda 関数を作成する
  3. [Create serverless application (サーバーレスアプリケーションの作成)] ダイアログボックスで、関数の以下の設定を指定します。

    • Function Name (関数名): 関数の名前。

    • Application Name (アプリケーション名): 新しい関数に関連付ける新しいサーバーレスアプリケーションの名前。

      重要

      これらの名前には、英数字とハイフンのみを使用する必要があります。各名前は、アルファベット文字で始まり、128 文字を超えないようにしてください。

  4. [Next (次へ)] を選択します。

  5. 開始するための関数設計図を選択します。(現在は、Node.js および Python 関数設計図のみが用意されています。)

    特定のランタイムの設計図を表示するには、[Select Runtime (ランタイムを選択)] を選択して、ランタイムを選択します。たとえば、Node.js 6.10 の hello-world 関数設計図を使用するには、[Select Runtime (ランタイムを選択)] で [Node.js 6.10] を選択してから、[Select Blueprint (設計図の選択)] で [hello-world] 設計図を選択します。

  6. [次へ] を選択します。

  7. 以下のいずれかの操作を行います。

    • この関数を AWS のサービスによって自動的にトリガーすることをスキップするには、[Function Trigger (関数のトリガー)] を [なし] のままにして [次へ] を選択してから、この手順のステップ 9 までスキップします。

    • AWS アカウント内の AWS リソースによって関数を自動的にトリガーするには、[Function Trigger (関数のトリガー)] で、リソースを含む AWS サービスの名前を選択します(現在は [API Gateway] のみ利用できます)。

  8. [Function Trigger (関数のトリガー)] で [API Gateway] を選択した場合は、[Trigger Settings (トリガーの設定)] で以下を指定します。

    • [Resource Path (リソースパス)] に、関数を呼び出すために使用する API の URL の一部を入力します。たとえば、リソースのルートを指定するには / と入力します。

    • [Security (セキュリティ)] で、API エンドポイントのセキュリティメカニズムを選択します。

  9. [次へ] を選択します。

  10. [Memory (MB) (メモリ (MB))] で、関数で使用するメモリ量 (メガバイト) を指定します。

  11. 以下のいずれかの操作を行います。

    • この関数で使用する新しい基本的な IAM ロール (実行ロール) を AWS Cloud9 によって作成するには、[Role (ロール)] で [Automatically generate role (自動的にロールを生成)] を選択します。続いて、[Next] を選択します。

    • Lambda で AWS アカウント内の既存の IAM ロール (実行ロール) を使用するには、[ロール] で [既存のロールを選択] を選択します。[Existing Role (既存のロール)] で、ロールの名前を選択し、[Next (次へ)] を選択します。

  12. [次へ] を選択します。

  13. [Finish] を選択します。

結果を以下と比較します。


            Lambda 関数を作成する

[AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションで、AWS Cloud9 は以下のように動作します。

  • 単一の関数を単独で作成するように選択した場合:

    1. AWS Cloud9 によって、前に指定された名前のサーバーレスアプリケーションが作成されます。次に、サーバーレスアプリケーション (フォルダ内の Lambda アイコンで表される) が [Local Functions (ローカル関数)] リストに追加されます。次に、Lambda 関数 (Lambda アイコン単独で表される) がこのサーバーレスアプリケーションに追加されます。

    2. AWS Cloud9 は、関数のリモートバージョンを Lambda で作成し、それを [Remote Functions (リモート関数)] リストに追加します。AWS Cloud9 は、リモートバージョンに別の名前を付けます。たとえば、サーバーレスアプリケーションを myDemoServerlessApplication、関数を myDemoFunction と名付けた場合、その関数のリモートバージョンの名前は cloud9-myDemoServerlessApplication-myDemoFunction-RANDOM_ID となります。RANDOM_ID はランダムに決定される ID です。

      
                        同じ関数を示すローカル関数とリモート関数
    3. API Gateway で自動的に関数をトリガーするように選択すると、AWS Cloud9 はその関数に対応する名前の API を API Gateway に作成します。たとえば、関数名を myDemoFunction にすると、API 名は cloud9-myDemoFunction になります。AWS Cloud9 は、[Resource Path (リソースパス)] に指定された値に基づいて、ANY メソッドを使用して関数を API にマッピングします。

  • 単一の関数を作成し、その後既存のサーバーレスのアプリケーションに追加するように選択した場合:

    1. AWS Cloud9 は、Lambda 関数 (Lambda アイコン単独で表される) を既存のサーバーレスアプリケーション (フォルダ内の Lambda アイコンで表される) に追加します。

    2. AWS Cloud9 は、関数のリモートバージョンを Lambda で作成し、それを [Remote Functions (リモート関数)] リストに追加します。AWS Cloud9 は、リモートバージョンに別の名前を付けます。たとえば、関数を myDemoFunction と名付け、それを myDemoServerlessApplication という名前のサーバーレスアプリケーションに追加した場合、リモートバージョンの名前は cloud9-myDemoServerlessApplication-myDemoFunction-RANDOM_ID となります。RANDOM_ID はランダムに決定される ID です。

    3. API Gateway で関数を自動的にトリガーするように指定すると、AWS Cloud9 は関連するサーバーレスアプリケーションに対応した名前の API を API Gateway に作成します (まだ作成していない場合)。たとえば、サーバーレスアプリケーションの名前を myDemoServerlessApplication にすると、API 名は cloud9-myDemoServerlessApplication になります。AWS Cloud9 は、[Resource Path (リソースパス)] に指定された値に基づいて、ANY メソッドを使用して関数を API にマッピングします。

[Environment (環境)] ウィンドウで、AWS Cloud9 は以下のように動作します。

  • 1 つの関数を単独で作成することを選択すると、AWS Cloud9 はサーバーレスアプリケーションと同じ名前のフォルダを作成し、このフォルダを AWS Cloud9 開発環境 のルートに配置します。次に、AWS Cloud9 はこのフォルダに以下のファイルを追加します。

    • .application.json: AWS Cloud9 で使用する隠しファイル。サーバーレスアプリケーション固有の JSON 形式の設定が含まれます。

    • .gitignore: Git を使用してこの関数のソースコードを管理する場合に、Git が無視するファイルのリストを含む隠しファイル。

    • template.yaml: Lambda 関数およびその他のサポートされている関連 AWS リソースに関する情報を含む AWS SAM テンプレートファイル。関数のローカルバージョンを更新して Lambda にアップロードするたびに、AWS Cloud9 は AWS SAM を呼び出し、このテンプレートファイルを使用してアップロードを行います。詳細については、AWS Lambda Developer Guide の「AWS サーバーレスアプリケーションモデル (AWS SAM) の使用」を参照してください。

      注記

      このファイルを編集して、サポートする関数の AWS リソースを追加で作成できます。詳細については、GitHub の AWS サーバーレスアプリケーションモデル (AWS SAM) リポジトリを参照してください。

    • 関数と同じ名前のサブフォルダ。関数ロジックを表すコードファイルが含まれています。

    • 関数が Python を使用する場合、前述のサブフォルダに追加のサブフォルダとファイルが追加され、Python でデバッグできるようにします。

      • .debug: デバッグ用の Python モジュールおよびファイルを含むサブフォルダ。

      • venv: 標準の Python virtualenv フォルダ。これには ikpdb という名前のモジュールが含まれており、AWS Cloud9 はこれを使用して Python アプリケーションをデバッグします。

      • __init__.py: 標準の Python パッケージ初期化ファイル。

      • requirements.txt: Python モジュールをインストールするための標準ファイル。

      • また、AWS Cloud9 は CodeUri プロパティを template.yaml ファイルに追加し、このプロパティで .debug/ フォルダを参照するように設定します。

  • 単一の関数を作成して、既存のサーバーレスアプリケーションに追加するように選択してある場合、AWS Cloud9 はサーバーレスアプリケーションを表すフォルダに以下を実行します。

    • 前述の template.yaml ファイルを更新して、Lambda 関数およびその他のサポートされている関連 AWS リソースに関する情報を含めます。

    • 関数と同じ名前のサブフォルダ。関数ロジックを表すコードファイルが含まれています。

    • 関数が Python を使用する場合、前述のサブフォルダに追加のサブフォルダとファイルが追加され、Python でデバッグできるようにします。

      • .debug: デバッグ用の Python モジュールおよびファイルを含むサブフォルダ。

      • venv: 標準の Python virtualenv フォルダ。これには ikpdb という名前のモジュールが含まれており、AWS Cloud9 はこれを使用して Python アプリケーションをデバッグします。

      • __init__.py: 標準の Python パッケージ初期化ファイル。

      • requirements.txt: Python モジュールをインストールするための標準ファイル。

      • また、AWS Cloud9 は CodeUri プロパティを template.yaml ファイルに追加し、このプロパティで .debug/ フォルダを参照するように設定します。

.application.json.gitignore ファイル (および Python の .debug フォルダ) は非表示です。隠しファイルを表示したり、表示されている隠しファイルを非表示にしたりするには、[Environment (環境)] ウィンドウで歯車アイコンを選択し、[Show Hidden Files (隠しファイルを表示する)] を選択します。


            非表示の Lambda ファイルを表示する

関数を呼び出すには、「Lambda 関数を呼び出す」を参照してください。関数に関連する API が API Gateway にある場合、この API を呼び出すには、「関連 Lambda 関数の API Gateway API を呼び出す」を参照して ください。

AWS Serverless Application Repository を使用して Lambda 関数を作成してデプロイする

AWS Cloud9 IDE と AWS Serverless Application Repository を使用して、複数の Lambda 関数を同時に作成したり、Lambda 関数およびサポートするコンポーネントを同時に作成したり、AWS 以外のエンティティが所有する Lambda 関数を作成したりできます。前に設定した AWS リージョンで AWS アカウントに Lambda 関数が既に存在する場合は、「Lambda 関数をインポートする」までスキップします。

  1. 別のウェブブラウザタブで AWS Serverless Application Repository を開きます。

  2. 作成するサーバーレスアプリケーションを見つけ、カード内の目的のサーバーレスアプリケーションのタイトルを選択します。(カードが表示されない場合は、目的のサーバーレスアプリケーションに関する情報を [Search applications by name, description, or labels (名前、説明、またはラベルでアプリケーションを検索する)] ボックスに入力して表示させます。)

  3. 表示された [Application details (アプリケーションの詳細)] ページで、Git ベースのリポジトリの URL が表示されている場合は、その URL をコピーします (例: https://github.com/USER_NAME/REPOSITORY_NAME)。

    注記

    URL が表示されていない場合は、[Application details (アプリケーションの詳細)] ページで [Deploy (デプロイ)] ボタンを選択して、[Source code URL (ソースコード URL)] の値を探します。

  4. AWS Cloud9 IDE に戻って、ターミナルが開いていない場合は開きます。(ターミナルを開くには、メニューバーで、[Window (ウィンドウ)]、[New Terminal (新しいターミナル)] の順に選択します。)

  5. ターミナルで、サーバーレスアプリケーションのスターターファイルをコピーする環境のディレクトリに変更します (たとえば、コマンド cd ~/environment を実行します)。

  6. コマンド git clone を、前にコピーしておいた URL を続けて実行します (例: git clone https://github.com/USER_NAME/REPOSITORY_NAME)。次に、IDE はサーバーレスアプリケーションの関数を [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションに追加します。

    注記

    [Application details (アプリケーションの詳細)] ページの URL や [Source code URL (ソースコード URL)] の値によっては、git clone コマンドを実行したときに、正しく動作しないか、予期しない結果を生じる場合があります。または、手動で目的のリポジトリからローカルワークステーションにファイルをダウンロードできます。次に、これらのファイルを手動で IDE にアップロードするには、メニューバーで [File (ファイル)]、[Upload Local Files (ローカルファイルをアップロードする)] を実行します。

    GitHub リポジトリをクローンすると、IDE はリポジトリの AWS サーバーレスアプリケーションモデル (AWS SAM) テンプレートファイルを使用して、[AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションに表示されるサーバーレスアプリケーションの関数を決定します。AWS SAM テンプレートファイルは、AWS サーバーレスアプリケーションモデル (AWS SAM) ファイル形式に従う必要があります。リポジトリに AWS SAM テンプレートファイルが含まれていない場合、またはファイルが AWS SAM ファイル形式に従っていない場合、IDE にこれらの関数は表示されません。また、これらの関数や関連する API Gateway リソースを [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションから実行、デバッグ、デプロイすることもできません。

  7. IDE からサーバーレスアプリケーションを正しく実行、デバッグ、またはデプロイするには、事前にいくつかのセットアップを完了する必要がある場合があります。セットアップ手順については、先ほど開いた [Application details (アプリケーションの詳細)] ページを参照してください。または、IDE にクローンしたサーバーレスアプリケーションのファイル内でセットアップ手順を探してください。

関数を呼び出すには、「Lambda 関数を呼び出す」を参照してください。関数に関連する API が API Gateway にある場合、この API を呼び出すには、「関連 Lambda 関数の API Gateway API を呼び出す」を参照して ください。この方法で関数または API を初めて呼び出す際に、AWS Cloud9 は隠しファイル .application.json をサーバーレスアプリケーションのコンポーネントファイルに追加します。このファイルは、AWS Cloud9 により使用され、サーバーレスアプリケーション固有の JSON 形式の設定を含む隠しファイルです。

サーバーレスアプリケーションのデプロイ中にパラメータを指定する必要がある場合は、IDE からターミナルを使用してのみデプロイできます。パラメータが必要かどうかを確認するには、先ほど開いた [Application details (アプリケーションの詳細)] ページで、[Deploy (デプロイ)] ボタンを選択し、[Configure application parameters (アプリケーションパラメータの設定)] カードでパラメータを確認します。パラメータがある場合は、IDE で AWS CloudFormation deploy コマンドを実行し、ターミナルからサーバーレスアプリケーションをデプロイします。次に例を示します。

aws cloudformation deploy --template-file TEMPLATE_FILE_PATH --parameter-overrides "PARAMETER_KEY_1=PARAMETER_VALUE_1" "PARAMETER_KEY_N=PARAMETER_VALUE_N" --region REGION_ID

上記のコマンドでは:

  • TEMPLATE_FILE_PATH は AWS SAM テンプレートファイルへのパスを表します。

  • PARAMETER_KEY_1 は最初のパラメータの名前を表します。

  • PARAMETER_VALUE_1 は最初のパラメータの値を表します。

  • PARAMETER_KEY_N はその他の追加パラメータの名前を表します。

  • PARAMETER_VALUE_N はその他の追加パラメータの値を表します。

  • REGION_ID はサーバーレスアプリケーションをデプロイする AWS リージョンの ID を表します (例: us-east-2)。

  • サーバーレスアプリケーションの要件に応じて、追加のオプションを指定することが必要になる場合があります。詳細については、前に開いた [Application details (アプリケーションの詳細)] ページを参照するか、IDE にクローンしたサーバーレスアプリケーションのファイル内にあるセットアップ手順を参照してください。

[AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションを使用してパラメータを必要とするサーバーレスアプリケーションをデプロイしようとすると、必要なパラメータがないというメッセージが表示され、サーバーレスアプリケーションはデプロイされません。

Lambda 関数をインポートする

既存の Lambda 関数が AWS アカウントにはあるが AWS Cloud9 開発環境 にはない場合、環境 で操作する前にインポートする必要があります。

注記

Lambda 関数が既存の AWS CodeStar プロジェクトの一部であり、環境 が AWS CodeStar コンソールのプロジェクト内から作成されている場合、関数は既にインポートされているため、再度インポートする必要はありません。

この動作を確認するには、[AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションの [Local Functions (ローカル関数)] リストで、AWS CodeStar プロジェクトと同じ名前のサーバーレスアプリケーション (フォルダ内の Lambda アイコンで表される) に関数の基本名を持つ Lambda 関数 (Lambda アイコン単独で表される) が含まれていることを確認します。また、[Remote Functions (リモート関数)] リストで awscodestar-PROJECT_NAME-lambda-BASE_FUNCTION_NAME-RANDOM_ID という形式の名前を持つ Lambda 関数があることを確認します。ここで PROJECT_NAME は AWS CodeStar プロジェクトの名前、BASE_FUNCTION_NAME は関数の基本名、RANDOM_ID はランダムに決定された ID です。


               同じ関数を示すローカル関数とリモート関数

関数が既にインポートされているため、関数のリモートバージョンを AWS CodeStar プロジェクトにインポートすることはお勧めできません。これを行うと、同じ関数コードの 2 つのバージョンが [Environment (環境)] ウィンドウに異なるフォルダ名で表示され、混乱が生じる可能性があります。

Lambda 関数をインポートするには、以下を実行します。

  1. [環境 (環境)] ウィンドウで、関数をインポートする場所を選択します。

  2. [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションで、[Remote Functions (リモート関数)] のリストから関数の名前を選択します。

    注記

    [Remote Functions (リモート関数)] リストに関数が表示されない場合は、[Refresh functions List (関数リストを最新の情報に更新する)] ボタン (円状の矢印ボタン) を選択します。

  3. 以下のいずれかの操作を行います。

    • 選択した関数をダブルクリックします。

    • [Lambda] セクションのメニューバーで、[Import the selected Lambda function (選択した Lambda 関数をインポートする)] ボタン (下向き矢印のボタン) を選択します。

    • 選択した関数を右クリックして、[Import (インポート)] を選択します。

    
                  AWS Cloud9 開発環境 で使用する Lambda 関数をインポートする

    注記

    Lambda 関数を、サーバーレスアプリケーションまたは Lambda 関数を表すフォルダにインポートすることはできません。これを行うと、Lambda 関数は代わりに環境のルートの場所にインポートされるというメッセージが AWS Cloud9 に表示されます。これを AWS Cloud9 で行う場合は、[Import (インポート)] を選択します。それ以外の場合は、[Cancel (キャンセル)] を選択して、関数をインポートする別のフォルダを選択 (または関数をインポートする新しい空のフォルダを作成) し、この手順を最初からやり直します。

  4. 関数のインポートを終了するように求められたら、[OK] を選択します。

AWS Cloud9 は関数を 環境 のルートにある新しいフォルダにインポートします (また、AWS Cloud9 は [AWS Resources (AWS リソース)] の [Lambda] セクションにある [Local Functions (ローカル関数)] リストに関数を追加します)。 このフォルダの名前は関数名と同じです。AWS Cloud9 は、このフォルダに以下のファイルを追加します。

  • .application.json: AWS Cloud9 で使用する隠しファイルであり、関数固有の JSON 形式の設定が含まれます。

  • .gitignore: Git を使用してこの関数のソースコードを管理する場合に、Git が無視するファイルのリストを含む隠しファイル。

  • template.yaml: AWS Cloud9 が内部で使用するファイル。

    注記

    template.yaml ファイルは AWS SAM 形式で表されますが、AWS SAM はこれを使用しません。そのため、このファイルを編集して、サポートする関数の AWS リソースを追加で作成することはできません。このファイルは変更しないでください。

  • 関数ロジックが含まれる 1 つ以上のコードファイル。

.application.json および .gitignore フィールドは非表示です。隠しファイルを表示または非表示にするには、[環境 (環境)] ウィンドウで歯車アイコンを選択し、[Show Hidden Files (隠しファイルを表示する)] を選択します。

関数を呼び出すには、「Lambda 関数を呼び出す」を参照してください。

Lambda 関数を呼び出す

既存の Lambda 関数を呼び出すには、まず関数のリモートバージョンを AWS Cloud9 開発環境 にインポートする必要があります (まだインポートしていない場合)。これを行うには、「Lambda 関数をインポートする」を参照してください。

  1. [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションで、[Local Functions (ローカル関数)] を展開します (まだ展開されていない場合)。

  2. 呼び出す関数が含まれているサーバーレスアプリケーションフォルダを展開します。

  3. 呼び出す関数を選択し、右クリックして、[Run (実行)] を選択します。

  4. 以下のいずれかの操作を行います。

    • 環境 内のローカルバージョンの関数を実行するには、[Run Local (ローカルで実行)] を選択します。

    • Lambda 内のリモートバージョンの関数を実行するには、[Run Remote (リモートで実行)] を選択します。

    
                  関数のローカルバージョンまたはリモートバージョンを実行するように選択する

    注記

    何も起こっていないように見える場合は、その関数の呼び出しタブが既に開いている可能性があります。その場合は、開いている呼び出しタブで [Lambda (local) (Lambda (ローカル))] または [Lambda (remote) (Lambda (リモート))] を選択します。

  5. 表示されている呼び出しタブの [Test payload (テストペイロード)] ペインで、テスト時に関数で使用するカスタム入力データを確認します。入力データの形式については、AWS Lambda Developer Guide の「ステップ 2.2: Lambda 関数を手動で呼び出し、結果、ログ、メトリクスを確認する」を参照してください。

  6. 呼び出しタブで、[Run (実行)] ボタンを選択します。

    
                  環境内でローカルで関数を実行する、または Lambda 内でリモートで実行するように選択する

    注記

    関数を初めて実行すると、lambda-payloads.json: ファイルが [環境 (環境)] ウィンドウの関数と関連するサーバーレスアプリケーションフォルダに追加されます。このファイルには、カスタム入力データのコンテンツが含まれています。

    既存の Lambda 関数を呼び出し、次に同じカスタム入力データを使用して API Gateway で、この関数と関連する API の同じ関数コードを呼び出そうとすると、エラーが発生したり、コードが正常に動作しない場合があります。詳細については、「API Gateway から Lambda 関数を呼び出す場合のレスポンスの違い」を参照してください。

呼び出しタブには、2 つのペインがあります。

  • [Test payload (テストペイロード)] ペインには、関数に指定したカスタム入力データが表示されます。

  • [Execution results (実行結果)] ペインには、関数の出力と、この関数に関連する Amazon CloudWatch Logs の情報が表示されます。

結果を以下と比較します。


            Lambda 関数を呼び出す

詳細については、AWS Lambda Developer Guide の「ステップ 2.2: Lambda 関数を手動で呼び出し、結果、ログ、メトリクスを確認する」を参照してください。

変更された関数コードのローカルバージョンを Lambda の関連するリモートバージョンにアップロードするには、「Lambda 関数のコードをアップロードする」を参照してください。

環境変数を使用する Lambda 関数を呼び出す

環境変数を使用する Lambda 関数をローカルまたはリモートで呼び出すには、次のいずれかを実行します。

事前定義された環境変数とその値を使用した Lambda 関数をローカルで呼び出す

事前定義された環境変数の定義を関数の template.yaml ファイルに追加して (まだ追加していない場合)、[AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションからその関数に [Run Local (ローカルで実行)] コマンドを実行します。

たとえば、index.js というファイルに次の Node.js 関数定義があるとします。

exports.handler = (event, context, callback) => { var result = { MY_ENV_VAR_1: process.env.MY_ENV_VAR_1, MY_ENV_VAR_2: process.env.MY_ENV_VAR_2 }; const response = { statusCode: 200, headers: { "Content-type": "application/json" }, body: result }; callback(null, response); };

また、index.js があるディレクトリの 1 つ上の関数の template.yaml に対して次の追加があるとします。

... Resources: MyEnvVarsFunction: Type: 'AWS::Serverless::Function' Properties: ... Environment: Variables: MY_ENV_VAR_1: "This is my environment variable 1 value from the template.yaml file." MY_ENV_VAR_2: "This is my environment variable 2 value from the template.yaml file."

[AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションからその関数に [Run Local (ローカルで実行)] コマンドを実行すると、次の内容が出力されます。

{ "statusCode": 200, "headers": { "Content-type": "application/json" }, "body": { "MY_ENV_VAR_1": "This is my environment variable 1 value from the template.yaml file.", "MY_ENV_VAR_2": "This is my environment variable 2 value from the template.yaml file." } }
呼び出し元が実行時に動的に提供する環境変数とその値を使用した Lambda 関数をローカルで呼び出す

[AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションからこのような関数に [Run Local (ローカルで実行)] コマンドを使用することはできません。

その代わりに、事前定義された環境変数の定義を関数の template.yaml ファイルに追加します (まだ追加していない場合)。次に、IDE のターミナルを使用して invoke コマンド、--env-vars 引数、および環境変数の定義とその値が含まれている個別の JSON ファイルで AWS SAM CLI を実行します。

たとえば、MyEnvVarsFunction という名前の次の Node.js 関数と、その定義が含まれている index.js というファイルがあるとします。

exports.handler = (event, context, callback) => { var result = { MY_ENV_VAR_1: process.env.MY_ENV_VAR_1, MY_ENV_VAR_2: process.env.MY_ENV_VAR_2 }; const response = { statusCode: 200, headers: { "Content-type": "application/json" }, body: result }; callback(null, response); };

また、index.js があるディレクトリの 1 つ上の関数の template.yaml に対して次の追加があるとします。

... Resources: MyEnvVarsFunction: Type: 'AWS::Serverless::Function' Properties: ... Environment: Variables: MY_ENV_VAR_1: "This is my environment variable 1 value from the template.yaml file." MY_ENV_VAR_2: "This is my environment variable 2 value from the template.yaml file."

また、MyEnvVars.json という名前の次のファイルが index.js と同じディレクトリにあるとします。

{ "MyEnvVarsFunction": { "MY_ENV_VAR_1": "This is my environment variable 1 value from the JSON file.", "MY_ENV_VAR_2": "This is my environment variable 2 value from the JSON file." } }

index.js と同じディレクトリから AWS SAM CLI コマンドを実行します。

sam local invoke --event lambda-payloads.json --template ../template.yaml --env-vars MyEnvVars.json

出力を次に示します。

{ "statusCode": 200, "headers": { "Content-type": "application/json" }, "body": { "MY_ENV_VAR_1": "This is my environment variable 1 value from the JSON file.", "MY_ENV_VAR_2": "This is my environment variable 2 value from the JSON file." } }
環境変数とその値を既に事前定義した Lambda 関数をリモートで呼び出す

[AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションからその関数に [Run Remote (リモートで実行)] コマンドを実行します。

既存のリモート関数をリモートで呼び出す前に、その関数の事前定義された環境変数の値を表示または変更するには、AWS Lambda Developer Guide の「AWS Lambda 環境変数」を参照してください。

呼び出し元が実行時に動的に提供する環境変数とその値を使用した Lambda 関数をリモートで呼び出す

[AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションからこのような関数に [Run Remote (リモートで実行)] コマンドを使用することはできません。

その代わりに、IDE のターミナルを使用して lambda コマンドの update-function-configuration アクション、および環境変数の定義とその値が含まれている --environment 引数で AWS CLI を実行します。次に、lambda コマンドの invoke アクションを実行します。

たとえば、MyEnvVarsFunction という名前の次の Node.js 関数、MY_ENV_VAR_1 および MY_ENV_VAR_2 という名前の事前定義された環境変数があるとします。

exports.handler = (event, context, callback) => { var result = { MY_ENV_VAR_1: process.env.MY_ENV_VAR_1, MY_ENV_VAR_2: process.env.MY_ENV_VAR_2 }; const response = { statusCode: 200, headers: { "Content-type": "application/json" }, body: result }; callback(null, response); };

次の AWS CLI コマンドを一度に 1 つずつ次の順序で実行します。

aws lambda update-function-configuration --function-name MyEnvVarsFunction --environment '{"Variables":{"MY_ENV_VAR_1":"This is my environment variable 1 value from the AWS CLI.","MY_ENV_VAR_2":"This is my environment variable 2 value from the AWS CLI."}}' aws lambda invoke --function-name MyEnvVarsFunction results.json

results.json という名前のファイルに次の内容が出力されます。

{ "statusCode": 200, "headers": { "Content-type": "application/json" }, "body": { "MY_ENV_VAR_1": "This is my environment variable 1 value from the AWS CLI.", "MY_ENV_VAR_2": "This is my environment variable 2 value from the AWS CLI." } }

詳細については、AWS Lambda Developer Guide の「Lambda 関数を作成してテストする 」にある update-function-configuration および invoke に関する説明を参照してください。

バージョン、エイリアス、またはレイヤーを使用する Lambda 関数を操作する

現在、[AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションでは、Lambda 関数にバージョン、エイリアス、またはレイヤーを使用するための機能を提供していません。その代わりに、IDE のターミナルを使用して、対応するコマンド、アクション、または引数で AWS CLI および AWS SAM CLI を実行できます。詳細については、以下を参照してください。

関連 Lambda 関数の API Gateway API を呼び出す

既存の Lambda 関数に関連する API Gateway の API を呼び出すには、まず関数のリモートバージョンを AWS Cloud9 開発環境 にインポートする必要があります (まだインポートしていない場合)。これを行うには、「Lambda 関数をインポートする」を参照してください。

注記

API Gateway API のリモートバージョンは 環境 でデバッグできません。呼び出しのみ可能です。ローカルバージョンをデバッグするには、「Lambda 関数のローカルバージョンまたはその関連 API Gateway API をデバッグする」を参照してください。

  1. [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションで、[Local Functions (ローカル関数)] を展開します (まだ展開されていない場合)。

  2. その API を呼び出す関数が含まれているサーバーレスアプリケーションフォルダを展開します。

  3. 関数を選択し、右クリックして、[Run (実行)] を選択します。

  4. 以下のいずれかの操作を行います。

    • 環境 内のローカルバージョンの API を実行するには、[Run API Gateway Local (API Gateway をローカルで実行)] を選択します。

    • Lambda 内のリモートバージョンの関数を実行するには、[Run API Gateway Remote (API Gateway をリモートで実行)] を選択します。

    注記

    何も起こっていないように見える場合は、その関数の呼び出しタブが既に開いている可能性があります。その場合は、開いている呼び出しタブで [API Gateway (local) (Lambda (ローカル))] または [API Gateway (remote) (Lambda (リモート))] を選択します。

  5. 表示されている呼び出しタブの [Test payload (テストペイロード)] ペインで、テスト時に API で使用する [Function (関数)]、[Path (パス)]、[Method (メソッド)]、[Query String (クエリ文字列)]、および [Body (本文)] を確認します。

    注記

    一部の API では [Body (本文)] などの設定がサポートされていません。詳細については、API の所有者に相談してください。

  6. 呼び出しタブで、[Run (実行)] ボタンを選択します。

    
                  呼び出しタブで [実行] を選択する

    注記

    API が関数に接続されていない場合は、関数の AWS SAM ファイルで API Gateway トリガーが見つからないというメッセージが表示されます。この AWS SAM ファイルを使用して API Gateway の API を関数に接続するには、GitHub の AWS サーバーレスアプリケーションモデル (AWS SAM) リポジトリを参照してください。

    API Gateway の API を呼び出し、次に同じカスタム入力データを使用して、 Lambda でこの API と関連する関数の同じコードを呼び出そうとすると、エラーが発生したり、コードが正常に動作しない場合があります。詳細については、「API Gateway から Lambda 関数を呼び出す場合のレスポンスの違い」を参照してください。

呼び出しタブには、2 つのペインがあります。

  • [Test payload (テストペイロード)] ペインには、API に指定した設定とカスタム入力データが表示されます。

  • [Execution results (実行結果)] ペインに、本文、ヘッダー、API レスポンスのログなどの情報が表示されます。

結果を以下と比較します。


            API Gateway で API を呼び出す

API Gateway から Lambda 関数を呼び出す場合のレスポンスの違い

API Gateway の API から Lambda 関数を呼び出してレスポンスを解析しようとすると、エラーが発生したり、コードが正常に動作しない場合があります。これは、Lambda と API Gateway で使用するレスポンス形式はわずかに異なるためです。具体的には、API Gateway ではレスポンスが親の body オブジェクトにラップされます。この問題に対処するには、関数にコードを追加して、レスポンスに親 body が存在するかどうかをチェックします。存在する場合、その body オブジェクトからデータを抽出できます。

たとえば、次の Node.js 関数コードがあるとします。

'use strict'; exports.handler = function(event, context, callback) { if (event.body) { event = JSON.parse(event.body); } const message = "Your favorite fruit is " + event.fruit + ". " + "Your favorite vegetable is " + event.vegetable + "."; const response = { statusCode: 200, headers: { "Content-type": "application/json" }, body: JSON.stringify( { "message": message } ) }; callback(null, response); };

また、次の同等の Python 関数コードがあるとします。

import json def lambda_handler(event, context): if 'body' in event: event = json.loads(event["body"]) message = ("Your favorite fruit is " + event["fruit"] + ". " + "Your favorite vegetable is " + event["vegetable"] + ".") response = { "statusCode": "200", "headers": { "Content-type": "application/json" }, "body": json.dumps({"message": message}) } return response

前述のコードを呼び出すには、以下の入力ペイロード (Lambda の場合) または入力本文 (API Gateway の場合) を使用します。

{ "fruit": "apple", "vegetable": "carrot" }

これに対して、Lambda では以下のレスポンスが返されます。

{ "statusCode": 200, "headers": { "Content-type": "application/json" }, "body": "{\"message\":\"Your favorite fruit is apple. Your favorite vegetable is carrot.\"}" }

また、API Gateway では以下のレスポンスが返されます ([Path (パス)] は [/]、[Method (メソッド)] は [POST] とします)。

{ "message": "Your favorite fruit is apple. Your favorite vegetable is carrot." }

Node.js の if (event.body) チェック、または Python の if 'body' in event チェックを含めない場合、この関数を API Gateway から呼び出すと、エラーが返されるか、API が正常に実行されない場合があります。

Lambda 関数に依存コードを追加する

Node.js の場合、環境 の Lambda 関数に依存パッケージを追加するために Node Package Manager (npm) の使用がサポートされています。Python の場合は、pip がサポートされています。npm と pip に関する一般的な情報については、npm および pip のウェブサイトを参照してください。

Node.js の Lambda 関数の npm パッケージに依存するには、Node.js の require ステートメントなどを使用します。次に、npm を使用して npm パッケージを 環境 の関数コードと同じディレクトリにインストールします。「Lambda 関数のコードをアップロードする」で説明されているように Lambda 関数をデプロイすると、AWS Cloud9 によって関数と関連パッケージの両方が Lambda にデプロイされます。

これを次の Node.js Lambda 関数コードの例で示します。このコードでは、lodash パッケージに依存して、指定された JSON 入力ペイロードをソートします。

'use strict'; /* Assume the following payload is input: [ { "firstName": "Shirley", "lastName": "Rodriguez" }, { "firstName": "Jane", "lastName": "Doe" }, { "firstName": "Arnav", "lastName": "Desai" } ] The expected response is: { "statusCode": 200, "headers": { "Content-type": "application/json" }, "body": { "result": [ { "firstName": "Arnav", "lastName": "Desai" }, { "firstName": "Jane", "lastName": "Doe" }, { "firstName": "Shirley", "lastName": "Rodriguez" } ] } } */ exports.handler = (event, context, callback) => { var lodash = require('lodash'); var result = lodash.orderBy(event, ['firstName'], ['asc']); const response = { statusCode: 200, headers: { "Content-type": "application/json" }, body: JSON.stringify( { "result": result } ) }; callback(null, response); };

lodash パッケージを 環境 にインストールするには、IDE のターミナルセッションを使用して、関数コードを含むディレクトリに移動します。次に、次の 2 つのコマンドを、次の順序で実行します。最初のコマンドでは、そのディレクトリに package.json ファイルを作成して設定し、Lambda に関数をデプロイするときに lodash パッケージもデプロイされるようにします。2 番目のコマンドでは、関数コードと同じ 環境 のディレクトリに lodash パッケージをインストールし、このディレクトリで package.json ファイルを適切に更新します。

npm init npm install lodash --save

npm init コマンドおよび package.json ファイルのヘルプについては、npm ウェブサイトの「Working with package.json」を参照してください。

IDE で、「Lambda 関数を呼び出す」で説明されているように、ローカルバージョンの Lambda 関数を呼び出します。「Lambda 関数のコードをアップロードする」で説明されているように、関数をデプロイし、次に関数のリモートバージョンを呼び出します。関数のローカルバージョンとリモートバージョンが想定どおりに機能します。

Python の Lambda 関数の pip パッケージに依存するには、Python の import ステートメントなどを使用します。次に、pip を使用して関連 pip パッケージを、環境の関数コードを含むディレクトリの 1 つ上のディレクトリにインストールします。「Lambda 関数のコードをアップロードする」で説明されているように Lambda 関数をデプロイすると、AWS Cloud9 によって関数と関連パッケージの両方が Lambda にデプロイされます。

これを次の Python Lambda 関数コードの例で示します。このコードでは、requests パッケージに依存して、HTTP リクエストを行い、関連する HTTP レスポンスに関する情報を返します。

''' Assume the following payload is input: { "url": "https://aws.amazon.com" } The expected response is similar to the following: { "statusCode": "200", "headers": { "Content-type": "application/json" }, "body": { "statusCode": 200, "date": "Fri, 19 Jan 2018 17:57:48 GMT", "lastModified": "Thu, 18 Jan 2018 18:08:23 GMT" } } ''' import requests import json def lambda_handler(event, context): result = requests.get(event["url"]) response = { "statusCode": "200", "headers": { "Content-type": "application/json" }, "body": json.dumps( { "statusCode": result.status_code, "date": result.headers["Date"], "lastModified": result.headers["Last-Modified"] } ) } return response

requests パッケージを 環境 にインストールするには、IDE のターミナルセッションを使用して、関数コードを含むディレクトリに移動します。次に、以下のコマンドを実行します。このコマンドでは、requests パッケージを、環境 ディレクトリにインストールします。これは関数コードがあるディレクトリの 1 つ上のディレクトリです。

pip install requests --target ../

IDE で、「Lambda 関数を呼び出す」で説明されているように、ローカルバージョンの Lambda 関数を呼び出します。「Lambda 関数のコードをアップロードする」で説明されているように、関数をデプロイし、次に関数のリモートバージョンを呼び出します。関数のローカルバージョンとリモートバージョンが想定どおりに機能します。

Python Lambda 関数が、この関数と同じディレクトリにある別の Python コードファイルのコードに依存するには、from ステートメントと import ステートメントを使用します。「Lambda 関数のコードをアップロードする」で説明されているように Lambda 関数をデプロイすると、AWS Cloud9 により、この関数およびこの関数と同じディレクトリにある別の Python コードファイルの両方が Lambda にデプロイされます。

この Python Lambda 関数の例を AWS Cloud9 IDE の次のディレクトリ構造で示します。

myDemoServerlessApplication `- myDemoFunction |- lambda-payloads.json |- lambda_function.py `- myClasses.py

myClasses.py ファイルに MyClass1 という名前のクラスの定義が含まれている場合の例を示します。

class MyClass1: # Class definition...

MyClass1 ファイルから lambda_function.py クラスを参照するには、次のステートメントをファイルに追加します。

from myDemoFunction.myClasses import MyClass1

Lambda 関数のローカルバージョンまたはその関連 API Gateway API をデバッグする

環境 のローカル Lambda 関数コードまたは関連する API Gateway API は、一般的なデバッグツール (ブレークポイント、ステップスルーコード、ウォッチ式の設定など) を使用してデバッグできます。

注記

環境 でリモートバージョンの Lambda 関数や関連する API Gateway API をデバッグすることはできません。呼び出しのみ可能です。

既存の Lambda 関数のローカルバージョンや関連する API Gateway API をデバッグするには、まずリモートバージョンの関数を AWS Cloud9 開発環境 にインポートする必要があります (まだインポートしていない場合)。「Lambda 関数をインポートする」を参照してください。

重要

Python 関数のリモートバージョンを 環境 にインポートする場合、デバッグする前に次のオプションのいずれかを選択する必要があります。

オプション 1: Python 関数で venv を使用しない場合、pip を使用して IKPdb を関数の template.yaml ファイルと同じディレクトリにインストールします。

IDE のターミナルセッションを使用して、関数の template.yaml ファイルがあるディレクトリに移動します。次に、以下のコマンドのいずれかを実行します。このコマンドによって、Python デバッガー IKPdb が関数の template.yaml ファイルと同じディレクトリにインストールされます。

pip install ikpdb --target . # For a function that uses Python 2.7. pip-3.6 install ikp3db --target . # For a function that uses Python 3.6.

オプション 2: Python 関数で venv を使用する場合、venv の pip を使用して IKPdb を関数の venv ディレクトリにインストールし、次に CodeUri プロパティを関数の template.yaml ファイルに追加します。

  1. IDE のターミナルセッションを使用して、関数の template.yaml ファイルがあるディレクトリに移動します。そのフォルダーから以下のコマンドのいずれかを実行します。このコマンドは、関数の venv/bin ディレクトリの pip を使用して、Python デバッガー IKPdb を関数の venv/lib/pythonMAJOR.MINOR/dist-packages ディレクトリにインストールします。

    venv/bin/pip install ikpdb # For a function that uses Python 2.7. venv/bin/pip3.6 install ikp3db # For a function that uses Python 3.6.
  2. [Environment (環境)] ウィンドウで、関数の template.yaml ファイルを開き、編集します。関数の Properties セクションで、CodeUri プロパティを追加し、その値を .debug/ に設定して、ファイルを保存します。例:

    AWSTemplateFormatVersion: '2010-09-09' Transform: 'AWS::Serverless-2016-10-31' Description: An AWS Serverless Specification template describing your function. Resources: myDemoFunction: Type: 'AWS::Serverless::Function' Properties: CodeUri: .debug/ # ...
  1. [Environment (環境)] ウィンドウで、デバッグする Lambda 関数のコードが含まれているファイルを開きます。

  2. コードに任意のブレークポイントやウォッチ式を設定します。コードをデバッグする を参照してください。

  3. [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションで、[Local Functions (ローカル関数)] を展開します (まだ展開されていない場合)。

  4. デバッグする関数が含まれているサーバーレスアプリケーションフォルダを展開します。

  5. デバッグする関数を選択し、右クリックして [Run (実行)]、[Run Local (ローカルで実行)] または [Run (実行)]、[Run API Gateway Local (API Gateway をローカルで実行)] を選択します。

    注記

    何も起こっていないように見える場合は、その関数の呼び出しタブが既に開いている可能性があります。その場合は、開いている呼び出しタブに移動して [Lambda (local) (Lambda (ローカル))] または [API Gateway (local) (API Gateway (ローカル))] を選択します。

  6. Lambda 関数の場合、表示されている呼び出しタブの [Test payload (テストペイロード)] ペインで、テスト時に関数で使用するカスタム入力データを確認します。入力データの形式については、AWS Lambda Developer Guide の「ステップ 2.2: Lambda 関数を手動で呼び出し、結果、ログ、メトリクスを確認する」を参照してください。

  7. API Gateway API の場合は、表示されている呼び出しタブの [Test payload (テストペイロード)] ペインで、テスト時に API で使用する [Path (パス)]、[Method (メソッド)]、[Query String (クエリ文字列)]、および [Body (本文)] を確認します。

    注記

    一部の API では [Body (本文)] などの設定がサポートされていません。詳細については、API の所有者に相談してください。

  8. [Run (実行)] ボタンの横にある [Run in Debug Mode (デバッグモードで実行)] を選択します。

  9. [Run (実行)] ボタンを選択します。

  10. 関数の実行がブレークポイントで一時停止するごとに、操作を決定します。コードをデバッグする を参照してください。


            関数の実行がブレークポイントで一時停止した際の動作を決定する

結果を以下と比較します。


            Lambda 関数をデバッグする

Lambda 関数のコードを変更する

AWS Cloud9 IDE を使用して関数のコードを変更するには、まず関連する関数のリモートバージョンを AWS Cloud9 開発環境 にインポートする必要があります (まだインポートしていない場合)。これを行うには、「Lambda 関数をインポートする」を参照してください。次に、以下の操作を実行します。

  1. [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションで、[Local Functions (ローカル関数)] を展開します (まだ展開されていない場合)。

  2. コードを変更する関数が含まれているサーバーレスアプリケーションフォルダを展開します。

  3. 関数を右クリックして、[Edit Function (関数の編集)] を選択します。

    
                  [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクション
  4. コードを変更して、ファイルを保存します。

変更された関数コードのローカルバージョンを Lambda の関連するリモートバージョンにアップロードするには、「Lambda 関数のコードをアップロードする」を参照してください。

Lambda 関数のコードをアップロードする

環境 の Lambda 関数のローカルバージョンを Lambda の関数の関連するリモートバージョンにアップロードするには、関数を作成した方法に応じて、以下のいずれかの手順に従います。

関数の作成方法 従う手順

IDE で [サーバーレスアプリケーションの作成] ウィザードを使用します。

サーバーレスアプリケーションの作成ウィザードで作成した Lambda 関数のコードをアップロードする

AWS CodeStar プロジェクトの一部として。

AWS CodeStar プロジェクトの一部である Lambda 関数のコードをアップロードする

AWS Serverless Application Repository を使用する。サーバーレスアプリケーションではデプロイ時にパラメータを指定する必要があります。

パラメータを使用して AWS Serverless Application Repository プロジェクトの一部である Lambda 関数のコードをアップロードする

他の方法。

特定の AWS CloudFormation スタック、関数名、または両方を使用して Lambda 関数のコードをアップロードする

サーバーレスアプリケーションの作成ウィザードで作成した Lambda 関数のコードをアップロードする

環境 で「サーバーレスアプリケーションウィザードを使用して Lambda 関数を作成する」を行った後、次のようにローカルバージョンのその関数を Lambda の関連するリモートバージョンの関数にアップロードできます。

  1. [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションで、[Local Functions (ローカル関数)] を展開します (まだ展開されていない場合)。

  2. アップロードする関数が含まれているサーバーレスアプリケーションフォルダを展開します。

  3. 以下のいずれかの操作を行います。

    • 選択したサーバーレスアプリケーションフォルダを右クリックして、[Deploy (デプロイ)] を選択します。

    • アップロードする関数を右クリックし、[Deploy (デプロイ)] を選択します。

    • アップロードする関数を選択して、[Deploy the selected Lambda function (選択した Lambda 関数をデプロイする)] (上向き矢印のボタン) を選択します。

    
                     [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションの [アップロード] コマンド

AWS CodeStar プロジェクトの一部である Lambda 関数のコードをアップロードする

AWS Cloud9 Integrated Development Environment (IDE) で AWS CodeStar プロジェクトを操作する」を行ったら、次のように 環境 のローカルバージョンのその関数を Lambda の関連するリモートバージョンの関数にアップロードできます。

IDE のターミナルセッションを使用して git push コマンドを実行し、コミットされたコードの変更を AWS CodeStar プロジェクトのリポジトリにプッシュします。これにより、AWS CodeStar を通じて 環境 のローカルバージョンの Lambda 関数を Lambda の関連するリモートバージョンの関数にアップロードします。

この手順に従わない場合、「パラメータ: [ProjectId] に値が必要です」というエラーが表示され、関数はデプロイされません。

パラメータを使用して AWS Serverless Application Repository プロジェクトの一部である Lambda 関数のコードをアップロードする

AWS Serverless Application Repository を使用して Lambda 関数を作成してデプロイする」を行った後で、このプロジェクトでアップロード時にパラメータの指定が必要な場合は、「」で AWS CloudFormation の deploy コマンドを参照し、アップロード手順を確認してください。

この手順を実行しないと、必要なパラメーターがないことを示すエラーが表示され、コードがアップロードされません。

特定の AWS CloudFormation スタック、関数名、または両方を使用して Lambda 関数のコードをアップロードする

アップロードプロセスを開始するには、AWS Cloud9 を通じて AWS CloudFormation でスタックを作成し、特定の名前を付けます。AWS CloudFormation は、このスタック内の情報を使用して 環境 にあるローカルバージョンの Lambda 関数を Lambda にある特定の関数にアップロードします。デフォルトでは、このスタックの名前と Lambda 関数の名前は次のいずれかです。必要に応じて変更することができます。

  • ローカルバージョンの Lambda 関数と同じフォルダに隠しファイル .application.json が存在し、このファイルに StackName 値が含まれている場合、スタック名は StackName 値と同じであり、Lambda 関数名は cloud9-APPLICATION_NAME-FUNCTION_NAME です。

  • ローカルバージョンの Lambda 関数と同じフォルダに隠しファイル .application.json が存在しないか、application.json ファイルは存在するが StackName 値がない場合、スタック名は cloud9-FOLDER_NAME であり、Lambda 関数名は cloud9-APPLICATION_NAME-FUNCTION_NAME です。

前述のスタックおよび関数名で、FOLDER_NAME は [環境 (環境)] ウィンドウの関連するフォルダの名前ですが、APPLICATION_NAMEFUNCTION_NAME は [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションに表示される関連する値です。

デフォルトの AWS CloudFormation スタックの名前または Lambda のデフォルトの関数名を変更しない場合は、このセクションの最後にあるアップロード手順までスキップします。

[AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションに表示されているのと同じ AWS リージョンで、デフォルト以外の AWS CloudFormation スタックを AWS アカウントで作成または使用するには、以下のいずれかの操作を実行します。

  • 既存の AWS CloudFormation スタックを使用してコードをアップロードする場合は、[AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションで、コードをアップロードする先の Lambda 関数が含まれているサーバーレスアプリケーションフォルダを右クリックし、[Link to CloudFormation Stack (CloudFormation スタックにリンクする)] を選択して、画面の手順に従って使用する既存のスタックを選択します。

    注記

    次の AWS CloudFormation にある既存のスタックからのみ選択できます。

    • CREATE_COMPLETE

    • CREATE_IN_PROGRESS

    • REVIEW_IN_PROGRESS

    • ROLLBACK_COMPLETE

    • ROLLBACK_IN_PROGRESS

    • UPDATE_COMPLETE

    • UPDATE_COMPLETE_CLEANUP_IN_PROGRESS

    • UPDATE_IN_PROGRESS

    • UPDATE_ROLLBACK_COMPLETE

    • UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS

    • UPDATE_ROLLBACK_IN_PROGRESS

  • 指定した名前で新しい AWS CloudFormation スタックを作成する場合、次のいずれかの操作を行います。

    • ローカルバージョンの Lambda 関数と同じフォルダに隠しファイル .application.json が存在し、このファイルに StackName 値が含まれている場合は、.application.json ファイルの StackName 値を、使用する AWS CloudFormation スタックの名前に変更して .application.json ファイルを保存します。

    • ローカルバージョンの Lambda 関数と同じフォルダに隠しファイル .application.json が存在するが、このファイルに StackName 値が含まれていない場合は、使用する新しい AWS CloudFormation スタックの名前を含む StackName 値を .application.json ファイルの先頭に追加して .application.json ファイルを保存します。たとえば、MyDemoStack のスタック名の場合、ファイルの先頭に次の値を追加します(省略記号を入力しないでください。ファイルの適切な位置に値を追加するためだけに表示されます)。

      { "StackName": "MyDemoStack", ... }
    • ローカルバージョンの Lambda 関数と同じフォルダに隠しファイル .application.json が存在しない場合は、このフォルダ内に新しい .application.json ファイルを作成し、使用する新しい AWS CloudFormation スタックの名前を含む StackName 値を .application.json ファイルに追加して .application.json ファイルを保存します。たとえば、MyDemoStack のスタック名の場合、ファイルに次の値を追加します。

      { "StackName": "MyDemoStack" }

[AWS Resources] ウィンドウの [Lambda] セクションに表示されているのと同じ AWS リージョンの AWS アカウントでデフォルト以外の Lambda 関数にコードをアップロードするには、関連する AWS SAM テンプレートファイル (template.yaml など) の Lambda 関数リソースの Properties セクションに FunctionName 値として関数名を追加します。たとえば、MyDemoFunction という名前の Lambda 関数リソースの場合、MyDemoFunctionFunctionName 値を追加し、cloud9-APPLICATION_NAME-FUNCTION_NAME の代わりに MyDemoFunction という名前の Lambda 関数にコードをアップロードします。(省略記号を入力しないでください。ファイルの適切な位置に値を追加するためだけに表示されます)。

... Resources: MyDemoFunction: Type: AWS::Serverless::Function Properties: FunctionName: MyDemoFunction ...

コードをアップロードする準備ができたら、次の手順を実行します。

  1. [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションで、[Local Functions (ローカル関数)] を展開します (まだ展開されていない場合)。

  2. アップロードする関数が含まれているサーバーレスアプリケーションフォルダを展開します。

  3. 以下のいずれかの操作を行います。

    • 選択したサーバーレスアプリケーションフォルダを右クリックして、[Deploy (デプロイ)] を選択します。

    • アップロードする関数を右クリックし、[Deploy (デプロイ)] を選択します。

    • アップロードする関数を選択して、[Deploy the selected Lambda function (選択した Lambda 関数をデプロイする)] (上向き矢印のボタン) を選択します。

    
                     [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションの [アップロード] コマンド

Lambda 関数をサーバーレスアプリケーションに変換する

AWS Cloud9 開発環境 にある既存の Lambda 関数のローカルバージョンが、まだサーバーレスアプリケーションの一部ではない場合、AWS Cloud9 IDE を使用してその関数をサーバーレスアプリケーションに変換できます。その後、そのサーバーレスアプリケーションの AWS SAM テンプレートファイルを使用して、関数がサポートする AWS リソースを追加で作成できます。詳細については、GitHub の AWS サーバーレスアプリケーションモデル (AWS SAM) リポジトリを参照してください。

既存の Lambda 関数のローカルバージョンをサーバーレスアプリケーションに変換するには、まず関数のリモートバージョンを AWS Cloud9 開発環境 にインポートする必要があります (まだインポートしていない場合)。「Lambda 関数をインポートする」を参照してください。

  1. [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションで、[Local Functions (ローカル関数)] を展開します (まだ展開されていない場合)。

  2. 変換する関数を右クリックし、[Convert to SAM (SAM に変換する)] を選択します。

    
                  [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションの [Convert to SAM (SAM に変換する)] コマンド

AWS Cloud9 は以下を実行します。

  • [環境 (環境)] ウィンドウの関数のフォルダで、.application.json ファイルの DeploymentMethod 設定が lambda から cloudformation に変わります。つまり、IDE を使用して関数のコードをサーバーレスアプリケーションの一部としてアップロードするたびに、AWS Cloud9 を通じて AWS SAM で AWS CloudFormation が使用されます (一方、lambda では、AWS Cloud9 を通じて Lambda で関数がデプロイされます)。 関数コードをアップロードするには、「」を参照してください。

  • [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションにある [Local Functions (ローカル関数)] リストで、AWS Cloud9 によって既存の Lambda 関数が新しいサーバーレスアプリケーション (フォルダ内の Lambda アイコンで表される) に追加されます。サーバーレスアプリケーションの名前は関数と同じです。

Lambda 関数のコードをアップロードする」で説明されているように、関数のコードをアップロードすると、関数のアップロード方法は Lambda ではなく AWS CloudFormation を使用する AWS SAM になっているため、AWS Cloud9 は新しいリモートバージョンの関数を Lambda に作成して [Remote Functions (リモート関数)] リストに追加します。AWS Cloud9 は、このリモートバージョンに元の Lambda 関数とは異なる名前を付けます。たとえば、サーバーレスアプリケーションと関数の名前が両方とも myDemoFunction である場合、その関数のリモートバージョンの名前は cloud9-myDemoFunction-myDemoFunction-RANDOM_ID となります。RANDOM_ID はランダムに決定される ID です。

重要

変換後に IDE を使用して関数コードに変更を加え、このコードを Lambda にアップロードすると、変更は新しい関数のリモートバージョン (例: cloud9-myDemoFunction-myDemoFunction-RANDOM_ID) にのみ反映されます。元の関数のリモートバージョン (例: myDemoFunction) は変更されません。

IDE でコードの変更をアップロードする先を、元の関数のリモートバージョン (例: myDemoFunction) に戻す場合は、次の操作を行います。

  1. [環境 (環境)] ウィンドウの関数のフォルダで、.application.json ファイルの DeploymentMethod 設定を変更して cloudformation から lambda に戻し、ファイルを保存します。これにより、サーバーレスアプリケーションフォルダが [Local Functions (ローカル関数)] リストから削除されるため、元のように AWS Cloud9 を通じて Lambda で関数がデプロイされます。

  2. Lambda 関数のコードをアップロードする」で説明されているように関数コードをアップロードします。これで、元の関数のリモートバージョン (例: myDemoFunction) のみに変更が含まれます。新しい関数のリモートバージョン (例: cloud9-myDemoFunction-myDemoFunction-RANDOM_ID) は変更されません。

  3. AWS Cloud9 によってコードの変更が新しい関数のリモートバージョン (例: cloud9-myDemoFunction-myDemoFunction-RANDOM_ID) にアップロードされなくなったため、必要に応じて Lambda コンソールを使用して新しい関数 (例: cloud9-myDemoFunction-myDemoFunction-RANDOM_ID) を削除できます。

Lambda 関数の構成設定を更新する

AWS Cloud9 IDE を使用して、説明、ハンドラー識別子、関数が使用するメモリ量、関数が使用する既存の実行ロールなどの関数の設定を変更できます。

構成設定を変更するには、関連する関数のリモートバージョンが AWS Cloud9 開発環境 にない場合、最初にインポートする必要があります。これを行うには、「Lambda 関数をインポートする」を参照してください。次に、以下の操作を実行します。

  1. [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションで、[Local Functions (ローカル関数)] を展開します (まだ展開されていない場合)。

  2. 設定を変更する関数が含まれているサーバーレスアプリケーションフォルダを展開します。

  3. 関数を右クリックして、[Edit Config (設定の編集)] を選択します。

    
                  [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションで Lambda 関数の構成設定を更新する
  4. 構成設定を変更して、ファイルを保存します。

    注記

    デフォルトでは、構成設定はプレーンテキストで表示されます。この動作を変更してデフォルトでビジュアルエディタに構成設定を表示するには、メニューバーで [AWS Cloud9]、[設定] を選択します。[AWS Settings (AWS の設定)] を選択して [Use AWS SAM visual editor (AWS SAM ビジュアルエディタを使用する)] を有効にします。ビジュアルエディタを使用するには、関数の template.yaml ファイルを閉じ、関数を右クリックして [Edit Config (設定の編集)] をもう一度選択します。デフォルトでプレーンテキストを使用するように戻すには、[Use AWS SAM visual editor (AWS SAM ビジュアルエディタを使用する)] 設定をオフにします。一時的にプレーンテキストを編集するには、ビジュアルエディタで [View with text editor (Ace) (テキストエディタで表示する (Ace))] を選択して、メニューバーで [View (表示)]、[Editors (エディタ)]、[Ace] の順に選択します。

  5. 以下のいずれかの操作を行います。

    
                  構成設定タブを使用して設定を Lambda にアップロードする、または Lambda 関数のコードをアップロードする

Lambda 関数を削除します。

環境 から Lambda 関数のローカルバージョンを削除したり、Lambda から関数のリモートバージョンを削除したり、または両方を実行したりできます。次に例を示します。

Lambda 関数のローカルバージョンを削除する

AWS Cloud9 IDE の [環境 (環境)] ウィンドウを使用して、関数が含まれているディレクトリを削除します。(Lambda 関数のローカルバージョンを削除するために、AWS Cloud9 IDE の [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションを使用することはできません。)

警告

Lambda 関数のローカルバージョンを誤って削除した場合、環境 に追加し直す唯一の方法は、リモートバージョンの関数 (まだ存在している場合) を 環境 にインポートすることです。手順については、「Lambda 関数をインポートする」を参照してください。

Lambda 関数のリモートバージョンを削除する

リモートバージョンの Lambda 関数を削除するには、Lambda コンソール、AWS CloudFormation コンソール、またはコードを使用します。(Lambda 関数のリモートバージョンを削除するために、AWS Cloud9 IDE の [AWS Resources (AWS リソース)] ウィンドウの [Lambda] セクションを使用することはできません。)

Lambda 関数のリモートバージョンの削除方法を決定するには、Lambda 関数のローカルバージョンと同じディレクトリにある .application.json ファイルを AWS Cloud9 IDE で開きます。DeploymentMethod 値が lambda に設定されている場合は、Lambda を使用してこの関数を削除します。DeploymentMethod 値が cloudformation に設定されている場合は、AWS CloudFormation を使用してこの関数を削除します。

注記

.application.json ファイルで DeploymentMethod 値が cloudformation に設定されている場合は、この関数を削除するために Lambda を使用しないでください。この場合、AWS CloudFormation の代わりに Lambda を使用して関数を削除すると、一部の関連する AWS リソースが残ったままになることがあります。これらの残りのリソースは、AWS アカウントに継続的な料金を発生する可能性があります。

Lambda を使用して、この関数のリモートバージョンを削除する

Lambda コンソールまたはコードを使用して、[AWS リソース] の [Lambda] セクション内の関数と同じ名前の関数を削除するか、.application.json ファイルの PhysicalId 値を削除します。次に手順を示します。

警告

リモートバージョンの関数を削除すると、これは Lambda から完全に削除されます。関数のリモートバージョンを誤って削除し、それを復元する必要があるとき、関数のローカルバージョンがまだ存在する場合には、そのローカルバージョンを Lambda にアップロードできます。手順については、「Lambda 関数のコードをアップロードする」を参照してください。

  • Lambda コンソールを使用して関数を削除するには、次を実行します。

    1. Lambda コンソール (https://console.aws.amazon.com/lambda) を開きます。

    2. AWS ナビゲーションバーで Lambda 関数を含む AWS リージョンが表示されない場合には、それを選択します。

    3. 関数のリストが表示されない場合は、サービスナビゲーションペインで [Functions (関数)] を選択します。

    4. 次のいずれかを行ってください。

      • 削除する関数の横にあるラジオボタンを選択します。次に、[Actions (アクション)]、[Delete (削除)] の順に選択します。[Delete (削除)] を選択して、削除を確定します。

      • 削除する関数の名前を選択します。次に、[Actions (アクション)]、[Delete Function (関数の削除)] の順に選択します。[Delete (削除)] を選択して、削除を確定します。

  • コードを使用して関数を削除するには、次のように、Lambda の関数削除オペレーションを呼び出します。

    AWS CLI

    delete-function

    AWS SDK for C++

    DeleteFunctionRequest

    AWS SDK for Go

    DeleteFunctionDeleteFunctionRequestDeleteFunctionWithContext

    AWS SDK for Java

    DeleteFunctionRequestDeleteFunctionResult

    AWS SDK for JavaScript

    deleteFunction

    AWS SDK for .NET

    DeleteFunctionRequestDeleteFunctionResponse

    AWS SDK for PHP

    deleteFunction

    AWS SDK for Python (Boto)

    delete_function

    AWS SDK for Ruby

    delete_function

    AWS Tools for Windows PowerShell

    Remove-LMFunction

    Lambda API

    DeleteFunction

AWS CloudFormation を使用して、この関数のリモートバージョンを削除する

AWS CloudFormation コンソールまたはコードを使用して、.application.json ファイルの StackName 値と同じ名前のスタックを削除します。次に手順を示します。

警告

スタックを削除すると、AWS CloudFormation はこのスタックに関連付けられているすべての AWS リソースを削除します。これには Lambda 関数だけでなく、その他の関連リソース (Amazon API Gateway の API など) も含まれます。関数のリモートバージョンを誤って削除し、それを復元する必要がある場合は、AWS Cloud9 IDE のローカルバージョンの関数 (まだ存在している場合) を Lambda にアップロードします。手順については、「Lambda 関数のコードをアップロードする」を参照してください。スタックのその他のリソースはすべて完全に削除され、復元できません。

  • AWS CloudFormation コンソールを使用してスタックを削除するには、次を実行します。

    1. AWS CloudFormation コンソール (https://console.aws.amazon.com/cloudformation) を開きます。

    2. AWS ナビゲーションバーでこのスタックを含む AWS リージョンが表示されない場合には、それを選択します。

    3. スタックのリストで、次のいずれかを実行します。

      • 削除するスタック名の横にあるチェックボックスを選択します。次に、[Actions (アクション)]、[Delete Stack (スタック)] の順に選択します。[Yes, Delete (はい、削除します)] を選択して、削除を確定します。

      • 削除するスタックの名前を選択します。次に、[Other Actions (他のアクション)]、[Delete Stack (スタックの削除)] の順に選択します。[Yes, Delete (はい、削除します)] を選択して、削除を確定します。

  • コードを使用してスタックを削除するには、次のように、AWS CloudFormation のスタック削除オペレーションを呼び出します。

    AWS CLI

    delete-stack

    AWS SDK for C++

    DeleteStackRequest

    AWS SDK for Go

    DeleteStackDeleteStackRequestDeleteStackWithContext

    AWS SDK for Java

    DeleteStackRequestDeleteStackResult

    AWS SDK for JavaScript

    deleteStack

    AWS SDK for .NET

    DeleteStackRequestDeleteStackResponse

    AWS SDK for PHP

    deleteStack

    AWS SDK for Python (Boto)

    delete_stack

    AWS SDK for Ruby

    delete_stack

    AWS Tools for Windows PowerShell

    Remove-CFNStack

    AWS CloudFormation API

    DeleteStack