スキップしてコンテンツを表示

Lambda でコンテナイメージを使用する方法を教えてください。

所要時間2分
0

依存関係を持つ AWS Lambda コンテナイメージを作成したいです。

解決策

Lambda コンテナイメージを作成する AWS Identity and Access Management (IAM) ユーザーまたはロールにアクセス許可が設定されていることを確認します。次に、以下の手順に従って Docker を使用してコンテナイメージをデプロイします。

  1. Docker のウェブサイトの「Get Docker」(Docker を入手する) ページにアクセスします。要件を満たす Docker Desktop アプリケーションを選択します。表示される指示に従って Docker Desktop をインストールします。

  2. ローカルマシンで、次の 3 つのファイルを含む 1 つのフォルダを作成します。 Dockerfile、ライブラリを含む requirements.txt、インポートステートメントを含む app.py。
    注: Amazon Elastic Container Registry (Amazon ECR) パブリックレジストリには最新バージョンの Python を使用してください。

    次の Dockerfile の例では Python 3.8 を使用しています。

    FROM public.ecr.aws/lambda/python:3.8
    # Copy function code
    COPY app.py ${LAMBDA_TASK_ROOT}
    
    # Install the function's dependencies using file requirements.txt
    # from your project folder.
    
    COPY requirements.txt .
    RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"
    
    # Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile)
    CMD [ "app.handler" ]

    次の app.py ファイルの例には、インポートステートメントの例が含まれています。

    import sysdef handler(event, context):
        return 'Hello from AWS Lambda using Python' + sys.version + '!'
  3. docker build コマンドとイメージ名を使用して Docker イメージをビルドします。

    以下は、"hello-world" を使用した docker build コマンドの例です。

    docker build -t hello-world .

    注: Amazon ECR パブリックリポジトリからプルする際に認証エラーが発生した場合は、「Amazon ECR Public troubleshooting」(Amazon ECR パブリックのトラブルシューティング) を参照してください。

  4. docker run コマンドを使用して Docker イメージを起動します。

    以下は、"hello-world" を使用した docker run コマンドの例です。

    docker run -p 9000:8080 hello-world
  5. GitHub のウェブサイトで AWS の Lambda Runtime Interface Emulator (RIE) を使用してアプリケーションをテストします。新しいターミナルウィンドウから curl コマンドを実行して、次のエンドポイントにイベントをポストします。

    curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'

    このコマンドは、コンテナイメージで実行されている関数を呼び出し、応答を返します。

  6. Docker CLI を Amazon ECR レジストリに対して認証します。
    コマンドのアカウント ID と AWS リージョンをお使いのアカウント ID とリージョンに変更してください。

    以下は、Amazon ECR レジストリに対して Docker CLI を認証するコマンドの例です。

    aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com
  7. create-repository コマンドを使用して Amazon ECR にリポジトリを作成します。

    以下は create-repository コマンドの例です。

    aws ecr create-repository --repository-name hello-world --image-scanning-configuration scanOnPush=true --image-tag-mutability MUTABLE
  8. docker tag コマンドを使用して、リポジトリ名と一致するようにイメージにタグを付けます。次に、docker push コマンドを使用してイメージを Amazon ECR にデプロイします。
    コマンドのアカウント ID と AWS リージョンをお使いのアカウント ID とリージョンに変更してください。

    以下は docker tag コマンドの例です。

    docker tag hello-world:latest 123456789012.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest

    以下は docker push コマンドの例です。

    docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
  9. Amazon ECR コンテナレジストリのコンテナイメージを使用して、Lambda 関数を作成して実行します。詳細については、「コンテナイメージを使用した Lambda 関数の作成」を参照してください。

AWS公式更新しました 2年前
3コメント

--target となるべき箇所で、targetの手前に全角文字が入っています。

RUN pip3 install -r requirements.txt —target "${LAMBDA_TASK_ROOT}"

応答済み 3年前

コメントをお寄せいただき、ありがとうございます。確認させていただいた後で、必要に応じて情報センターを更新いたします。

AWS
モデレーター

応答済み 3年前

This article was reviewed and updated on 2024-07-25.

エキスパート

応答済み 7日前

関連するコンテンツ