Aws-lambda-creating-and-deploying-using-aws-cli
AWS CLIを使用して作成およびデプロイする
*AWS CLI* は、AWSサービスを操作するのに役立つコマンドラインツールです。 これを使用して、awsラムダ関数を作成、更新、削除、呼び出すことができます。 この章では、AWS CLIのインストールと使用について詳しく説明します。
AWS CLIのインストール
このセクションでは、さまざまなオペレーティングシステムでのAWS CLIのインストールについて説明します。 指定された手順に従い、接続されている場所に対応するスクリーンショットを観察します。
Windowsの場合
Windows設定を確認し、AWS CLI MSIをインストールするための次のリンクのいずれかを選択します-
- Windows 64ビットの場合-https://s3.amazonaws.com/aws-cli/AWSCLI64.msi[Windows用のAWS CLI MSIインストール(64ビット)] *Windows 32ビットの場合-https://s3.amazonaws.com/aws-cli/AWSCLI32.msi[AWS CLI MSI install for windows(32)]
対応するリンクを選択してクリックすると、ここに示すようにウィンドウを見つけることができます-
次に、以下のスクリーンショットに示されているように、Windows* 環境のパスを設定します-
完了したら、コマンドプロンプトで次のコマンドを使用して、 aws cli がインストールされているかどうかを確認できます-
aws --version
次のスクリーンショットに示すように、aws-cliバージョンの詳細が表示されます-
Linux/Macの場合
LinuxおよびMacにインストールするには、Python 2.6.3以降のバージョンが必要です。 その後、さらにインストールプロセスのために次のコマンドを使用します-
$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
$ unzip awscli-bundle.zip
$ sudo ./awscli-bundle/install -i/usr/local/aws -b/usr/local/bin/aws
次に、AWSの設定を構成する必要があります。 この目的のために次のコマンドを使用できます-
aws configure
この目的のために、それは次のような詳細が必要です-
- AWSアクセスキーID
- AWSシークレットアクセスキー
- デフォルトの地域名
- フォーマットからのデフォルト出力
これらの詳細は、awsコンソールから取得できます。 示されているように、右上隅にあるアカウント名に移動します-
次に、[ My Security Credentials ]をクリックして、左側からユーザーを選択します。 尋ねられた詳細でユーザーを追加します。
ユーザーを追加し、アクセスキーとシークレットキーを取得します。 新しいアクセスキーを表示するには、*表示*を選択します。 資格情報は次のようになります-
- アクセスキーID-AOSAIOSFOCDD7Example *
- シークレットアクセスキー-aJuirCVtnROUN/K7MDENG/bPxRfiCYExampleKEY *
AWS CLISのリファレンスコマンド
次の表に、 aws cli で使用できるコマンドリファレンスを示します。
Name of aws cli command | Command reference |
---|---|
create-function | create-function --function-name <value> --runtime <value> --role <value> --handler <value> [--code <value>] [--description <value>] [--timeout <value>] [--memory-size <value>] [--environment <value>] [--kms-key-arn <value>] [--tags <value>] [--zip-file <value>] [--cli-input-json <value>] |
list-functions | list-functions [--master-region <value>] [--function-version <value>] [--max-items <value>] [--cli-input-json <value>] [--starting-token <value>] [--page-size <value>] [--generate-cli-skeleton <value>] |
get-function | get-function --function-name <value> [--qualifier <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>] |
get-function-configuration | get-function-configuration --function-name <value> [--qualifier <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>] |
get-account-settings | get-account-settings [--cli-input-json <value>] [--generate-cli-skeleton <value>] |
update-function-configuration | update-function-configuration --function-name <value> [--role <value>] [--handler <value>] [--description <value>] [--timeout <value>] [--memory-size <value>] [--vpc-config <value>] [--environment <value>] [--runtime <value>] [--dead-letter-config <value>] [--kms-key-arn <value>] [--tracing-config <value>] [--revision-id <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>] |
update-function-code | update-function-code --function-name <value> [--zip-file <value>] [--s3-bucket<value>] [--s3-key <value>] [--s3-object-version <value>] [--publish |
--no-publish] [--dry-run | --no-dry-run] [--revision-id <value>][--cli-input-json <value>][--generate-cli-skeleton <value>] |
delete-function | delete-function --function-name <value> [--qualifier <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>] |
次に、これらのコマンドを1つずつ詳細に説明します。
作成機能
このAPIは、新しいラムダ関数を作成します。 コードはzip形式で提供する必要があります。 作成する関数が既に存在する場合、APIは失敗します。 関数名では大文字と小文字が区別されることに注意してください。
含まれるコマンド
あなたが作成機能で使用できるコマンドのリストはここに与えられています-
create-function
--function-name <value>
--runtime <value>
--role <value>
--handler <value>
[--code <value>]
[--description <value>]
[--timeout <value>]
[--memory-size <value>]
[--environment <value>]
[--kms-key-arn <value>]
[--tags <value>]
[--zip-file <value>]
[--cli-input-json <value>]
含まれるオプション
上記の機能で使用できるさまざまなオプションは次のとおりです-
-function-name(string)-これは関数の名前を取ります。 名前は64ビット文字にすることができます。
-runtime(string)-ここでは、ランタイム環境、つまり言語選択を指定する必要があります。 ランタイムの詳細は以下のとおりです-
Options available | runtime |
---|---|
Python v3.6 | python3.6 |
Python v2.7 | python2.7 |
NodeJS v6.10 | nodejs6.10 |
NodeJS v8.10 | nodejs8.10 |
Java | java8 |
C# 1 | dotnetcore1.0 |
C# 2 | dotnetcore2.0 |
Go | go1.x |
-role(string)-これは、ラムダポリシーの名前、つまり、他のサービスにアクセスするためにラムダ関数に付与されるロールになります。 指定されたロールごとに許可が与えられます。
-handler(string)-これは、ラムダコードの実行が開始されるハンドラの名前です。
- nodejsの場合、ハンドラー名はエクスポートするモジュール名です。
- Javaの場合、package.classname :: handlerまたはpackage.classnameです。
- Pythonの場合、ハンドラーはnameofthefileです。
-コード(構造) -AWS Lambdaコード
-description(string)-AWS Lambda関数の説明
-timeout(integer)-timeoutは、ラムダ関数が実行を終了しなければならない時間を持ちます。 デフォルトは3秒です。
-memory-size(integer)-これはawsラムダ関数に与えられるメモリです。 AWSは、指定されたメモリに基づいてCPUとメモリの割り当てを割り当てます。
-環境(構造)-awsラムダ関数で必要な環境の詳細を持つオブジェクト。
e.g : Variables = {Name1 = string, Name2 = string}
-kms-key-arn(string)-これは環境変数の暗号化に使用されるAmazonリソースネーム(ARN)です。 指定されない場合、暗号化するためにデフォルト設定が使用されます。
-zip-file(blob)-コードの詳細を含むzipファイルのパス。
-cli-input-json(string):指定されたJSON文字列に基づいてサービス操作を実行します。 JSON文字列は、-generate-cli-skeletonで提供される形式に従います。 コマンドラインで他の引数が指定されている場合、CLI値はJSONが提供する値を上書きします。
ここで、nodejとしてランタイムを使用して簡単なAWS Lambda関数を作成し、印刷するconsole.logを追加しましょう。
同じを理解するためのサンプルコードを検討してください-
exports.handler = async (event) => {
console.log("Using aws cli");
return 'Hello from Lambda from aws cli!'
};
ここで、ファイルを圧縮し、 awscli.zip として保存します。
ARNを取得する
ロールには、作成した既存のロールの arn を使用しましょう。 ARNを取得するには、次の手順に従う必要があります。 接続されている場合は、それぞれのスクリーンショットを確認します-
ステップ1
IAMに移動し、ロール*から目的のロールを選択します。 以下に示すように、ロールのARN詳細が表示されます。 *aws cli の create-function で Role ARN を使用します。
- ここで、役割arnがarn:aws:iam
- 625297745038:role/lambdaapipolicyであることを確認します
- 作成機能*の値を持つコマンドは次のとおりです-
aws lambda create-function
--function-name "awslambdausingcli"
--runtime "nodejs8.10"
--role "arn:aws:iam::625297745038:role/lambdaapipolicy"
--handler "awscli.handler"
--timeout 5
--memory-size 256
--zip-file "fileb://awscli.zip"
これで、aws cliでコマンドを実行すると、次のように出力を見つけることができます-
AWSコンソールでは、以下に示すようにLambda関数が表示されます-
機能の詳細はここに示されているとおりです-
構成の詳細は以下のとおりです-
あなたが示すように機能をテストし、出力を確認することができます-
対応するログ出力はここに示されています-
リスト関数
このAPIは、AWS Lambdaでこれまでに作成された関数のリストを提供します。
含まれるコマンド
以下は、このAPIに関連付けられているコマンドです-
list-functions
[--master-region <value>]
[--function-version <value>]
[--max-items <value>]
[--cli-input-json <value>]
リスト関数の下のオプション
以下は、このリスト関数APIの下で使用できるさまざまなオプションです-
-master-region(string)-オプション。 関数を表示する必要がある領域。
-function-version(string)-オプション。 これにより、関数のバージョンが示されます。
-max-items(integer)-オプション。 これにより、指定された値ごとにアイテムが提供されます。
-cli-input-json(string)-オプション。 提供されたjsonファイルに基づいて操作を実行します。
値 list-functions を持つコマンドは次のとおりです-
aws lambda list-functions --max-items 3
コマンドは次のように詳細を表示します-
取得機能
このAPIは、関数の詳細と、create-functionを使用してzipファイルをアップロードしたURLリンクを提供します。 zipの詳細を含むURLは10分間のみ有効です。
含まれるコマンド
以下は、このAPIに関連付けられているコマンドです-
get-function
--function-name <value>
[--qualifier <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
含まれるオプション
- -function-name *-AWS Lambda関数の名前。 関数のAmazonリソースネームを指定することもできます。
-qualifier(string)-オプション。 関数のバージョンを使用して、関数の詳細を取得できます。
関数を取得する値を持つコマンドは次のとおりです-
aws lambda get-function --function-name awslambdausingcli
コマンド表示の詳細は次のとおりです-
郵便番号がアップロードされたURLを提供します。 上記の場合、URLは-
https://prod-04-2014-
tasks.s3.amazonaws.com/snapshots/625297745038/awslambdausingcli-97048f8d-4a08
-4ed9-99d9-acb00d2063d2?versionId=d04HKvPu9S2zz8pzjbW6Rmf5o5fxnc_r&X-Amz-Security
-Token=FQoDYXdzEKT%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDCpTmGvtwKToPBiWcyK3A96UcJEnwvYDhMbbxu
%2Bg2gffK2ocfnlEeiCHak8QqqE1RFpbKrdks9NzxP9gNbagL4M9RValxJ1a9PUY%2FOdAekscRHOiX00MVAxUlI8
2pKryhdOwLJWSj0uRzqvOxCcBwJenHrSNPeG6lMa2ZDo0qZFEUDONSaTg4nuSnJK1f6t3pMAKu4vF9wPvf92G%2BU
60rUxwleggigISmD9l1IlZse3%2BVF1JlNuN%2F5d85v0y2Q%2F%2BO515CybcZpn91sHPYG8JMJ00LsrkQ2Ww4VU
9Zz5c5QYH4JYPj0CyEgSz9b%2FMceMPpOoPUAMjctb%2FEwQqcShZeqAr9%2Fcd2ZI%2BXl2%2Bs4ri0ucgPvQQvs
eGIIiZbX3GqdwR2jb1nylrAEIfiuFMoSWfcFYoYtuL0MZnjGR9jy2GNkp6MB%2BlHHr7%2BnuFRUzU26rgDYmdE1w
Rb3%2B21Jm49WGDa9opRLvUxFaux57Or70haib2FuKzN6Gf3Vzzk5KPdWsYUpaLyf%2B1ovEytOZhB1JEXuCs%2FG
IlOXS88yxT%2BpOKmyxweiezpGgI%2FAkSAQTbSRsYQKIOFyIJNHzplwrJKhy28vy60numIBIo9Zqq2AU%3D
&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20180527T112426Z&X-Amz-
SignedHeaders=host&X-Amz-Expires=600&X-Amz-
Credential=ASIAICSQHLSBWFP37U4Q%2F20180527%2Fus-
east-1%2Fs3%2Faws4_request&X-Amz-Signature=
8b97e7d6d7da13313068e027894d2c875be5e50a0c5a62550f55307985bdc1aa
get-function-configuration
これにより、AWS Lambda関数の構成の詳細が表示されます。
以下は、このAPIと一緒に使用されるコマンドです-
get-function-configuration
--function-name <value>
[--qualifier <value>]
- 以下は*で使用されるオプションです
-function-name(string)- awsラムダ関数の名前。 関数のAmazonリソースネームを指定することもできます。
- -qualifier(string)-*オプション。関数のバージョンを使用して、関数の詳細を取得できます。
関数を取得する値を持つコマンドは次のとおりです-
aws lambda get-function-configuration --function-name awslambdausingcli
コマンドは次のように詳細を表示します-
アカウント設定の取得
このAPIはアカウント設定を提供します。
関与するコマンド
このAPIで使用できるコマンドは次のとおりです-
get-account-settings
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
関係するオプション
このAPIで次のオプションを使用できます-
- -cli-input-json(string)-*指定されたjson文字列に基づいてサービスを実行します。
-generate-cli-skeleton(string)- APIリクエストを送信せずにjson出力を出力します。
あなたは、get-account-settingsに次のコマンドを使用できます-
aws lambda get-account-settings
上記のコマンドを実行すると、次の出力が表示されます-
更新機能の構成
このAPIは、作成されたAWS Lambda関数の構成の詳細を更新するのに役立ちます。 メモリ、タイムアウト、ハンドラー、ロール、ランタイム、説明などを変更できます。
関与するコマンド
以下は、更新機能設定APIに関連するコマンドです-
update-function-configuration
--function-name <value>
[--role <value>]
[--handler <value>]
[--description <value>]
[--timeout <value>]
[--memory-size <value>]
[--environment <value>]
[--runtime <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
関係するオプション
以下は、更新機能設定APIに含まれるオプションです-
-関数名- awsラムダ関数の名前
- -role(string)-*オプション。 ロールのARNを更新する必要があります。
- -handler(string)-*オプション。 awsラムダ関数のハンドラーの詳細。
- -description(string)-*オプション。 関数の説明。
- -timeout(integer)-*オプション。 awsラムダ関数を終了するために必要な時間。
- -memory-size(integer)-*オプション。 これは、awsラムダ関数に与えられるメモリです。 AWSは、指定されたメモリに基づいてCPUとメモリの割り当てを割り当てます。
- -環境(構造)-*オプション。 これは、awsラムダ関数で必要な環境の詳細を持つオブジェクトです。
e.g: Variables = {Name1 = string, Name2 = string}
- -runtime(string)− *ここでは、ランタイム環境、つまり言語選択を指定する必要があります。
ランタイムの詳細は、以下の表に示されています-
Options available | runtime |
---|---|
Python v3.6 | python3.6 |
Python v2.7 | python2.7 |
NodeJS v6.10 | nodejs6.10 |
NodeJS v8.10 | nodejs8.10 |
Java | java8 |
C# 1 | dotnetcore1.0 |
C# 2 | dotnetcore2.0 |
Go | go1.x |
- -cli-input-json(string)-*オプション。 これにより、提供されたjson文字列で指定されたAPIで操作が実行されます。
-generate-cli-skeleton(string)-*オプション。 これにより、APIを実行せずにすべての詳細のJSONスケルトンが出力されます。 出力は、-cli-input-json。*への入力として使用できます。
さて、先ほど作成したAWS Lambda関数のメモリとタイムアウトを変更しましょう。 以下の手順に従って、この目的のために添付された対応するスクリーンショットを観察します-
ステップ1
変更が発生する前のメモリとタイムアウトは次のとおりです-
ステップ2
*update-function-configuration* を使用して、メモリとタイムアウトを320MBに、タイムアウトを10秒に変更しましょう。 この目的のために、値を指定して次のコマンドを使用します-
aws lambda update-function-configuration --function-name “awslambdusingcli”
--timeout 10 --memory-size 320
ステップ3
その後、ディスプレイとして次の出力を見ることができます-
ステップ4
*update-function-configuration* を使用した後のAWSコンソールの表示は次のとおりです-
更新機能コード
このAPIは、既存のAWS Lambda関数のコードを更新します。
関与するコマンド
update-function-code
--function-name <value>
[--zip-file <value>]
[--s3-bucket <value>]
[--s3-key <value>]
[--s3-object-version <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
関係するオプション
以下は、更新機能コードAPIに関連するオプションです-
-function-name(string)- awsラムダ関数の名前
- -zip-file(blob)-*オプション。 更新するコードを含むzipファイルのパス。
- -s3-bucket(string)-*オプション。 コードがアップロードされたzipファイルを持つS3バケット名。
- -s3-key(string)-*オプション。 アップロードする必要があるAWS s3オブジェクトキー名。
- -s3-object-version(string)-*オプション。 AWS s3オブジェクトバージョン。
- -cli-input-json(string)-*オプション。 これにより、提供されたjson文字列で指定されたAPIで操作が実行されます。
- -generate-cli-skeleton(string)-*オプション。 これにより、APIを実行せずにすべての詳細のJSONスケルトンが出力されます。 出力は、-cli-input-jsonへの入力として使用できます。
更新されたコードは以下のとおりです-
exports.handler = async (event, context) => {
console.log("Using aws cli");
console.log()
return 'Hello from Lambda from aws cli!'
};
あなたはこの目的のための値で次の*コマンドを使用することができます-
aws lambda update-function-code --function-name "awslambdausingcli"
--zip-file "fileb://awscli.zip"
対応する出力はここに示されているとおりです-
AWSコンソールからの表示はここに示されているようです-
対応するログ出力は以下のとおりです-
削除機能
*delete* aws cli apiは指定された関数を削除します。
含まれるコマンド
同じためのコマンドの詳細はここに与えられています-
delete-function
--function-name <value>
[--qualifier <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
含まれるオプション
このAPIに含まれるオプションは以下のとおりです-
- -function-name(string)-*これは、ラムダ関数名またはawsラムダ関数のarnを取ります。
- -qualifier(string)-*これはオプションです。 ここで、削除する必要があるaws lambdaのバージョンを指定できます。
- cli-input-json(string)-*提供されたJSON文字列に基づいてサービス操作を実行します。 JSON文字列は、-generate-cli-skeletonで提供される形式に従います。 コマンドラインで他の引数が指定されている場合、CLI値はJSONが提供する値を上書きします。
-generate-cli-skeleton(string)- APIリクエストを送信せずにjsonスケルトンを標準出力に出力します。
aws lambda delete-function --function-name "lambdatestcli"
今、関数がAWS Lambda関数リストに表示されないことを観察します-