投稿

ラベル(AWS CLI)が付いた投稿を表示しています

AmazonSAMのデバッグ

AmazonSAMのデバッグ AmazonSAMのデバッグ VSCodeでAmazonSAMのデバッグする場合は「構成の追加…」で AWS SAM:Debug Lambda Function Locally を選択すればlaunch.jsonを作ってくれてF5で実行できるのですが実行する度にコンテナ起動するので時間掛かります。 じゃあ以下でローカル実行してる時にデバッグしたい場合はどうするのかという話です。 $ sam local start-api デバッグポートオプション付きで起動する “-d"または”–debug-port"オプションを使用します。 このオプションを付けるとコンテナがデバッグモードで起動されます。 $ sam local start-api --debug-port 5555 launch.jsonにアタッチ用の設定を追加する 以下を追加します。 "version" : "0.2.0" , "configurations" : [ { "type" : "node" , "request" : "attach" , "name" : "Attach to SAM CLI" , "address" : "localhost" , "port" : 5555 , "localRoot" : "${workspaceRoot}/hello-world" , "remoteRoot" : "/var/task" , } , これでVSCodeからデバック実行するとSAMのコンテナに接続されます。 sam local start-api を実行した後必ず一度は接続してください。 デバックモードで起動してる場...

AmazonSAMでTypeScriptはデバッグできない

イメージ
AmazonSAMでTypeScriptはデバッグできない AmazonSAMでTypeScriptはデバッグできない Amazon SAMでnode.js でSAM CLIでTypeScriptの雛形を作ったんですが。 ビルドできます。 デプロイできます。 ローカルデバッグ・・・できませんでした! これは困る。 2023/11/15現在、諦めた方がいいみたいです。 何をやっても以下のようにエラーが出ます。 デバッグに必要なマップファイルが読み込めないんじゃブレークポイント貼っても止まりませんよねぇ。 file:///var/task/app.js のソース マップを読み取れませんでした: ENOENT: no such file or directory, open '/home/abe/projects/SAMTest/sam-app/hello-world/app.js.map' AWSの「 TypeScript アプリケーションをデバッグするが、ブレークポイントが機能しない 」の記事があったのでできる前提で色々試してはみたんですが。 tsconfig.jsonに"inlineSourceMap": trueを追加したけどダメ。 一応、 $ cd hello_world $ npm run compile $ cd .. $ sam build とやったけど症状変わらず。 *.js.map自体は .aws-sam/build/HelloWorldFunction にあったので launch.jsonを以下のように書き換えてみたけど・・・ダメでした。 { "type" : "aws-sam" , "request" : "direct-invoke" , "name" : "sam-app:HelloWorldFunction (nodejs18.x)" , "invokeTarget" : { "target...

Amazon SAMでnode.js

Amazon SAMでnode.js Amazon SAMでnode.js Lambdaの中身をnode.js + TypeScriptで新規プロジェクト作ってみます。 $ sam init You can preselect a particular runtime or package type when using the `sam init` experience. Call `sam init --help` to learn more. Which template source would you like to use? 1 - AWS Quick Start Templates 2 - Custom Template Location Choice: 1 Choose an AWS Quick Start application template 1 - Hello World Example 2 - Data processing 3 - Hello World Example with Powertools for AWS Lambda 4 - Multi-step workflow 5 - Scheduled task 6 - Standalone function 7 - Serverless API 8 - Infrastructure event management 9 - Lambda Response Streaming 10 - Serverless Connector Hello World Example 11 - Multi-step workflow with Connectors 12 - GraphQLApi Hello World Example 13 - Full Stack 14 - Lambda EFS example 15 - Hello World Example With Powert...

Amazon SAMについて勉強中

イメージ
Amazon SAMについて勉強中 Amazon SAMについて 急遽勉強中。 Amazon SAMのSAMはServerless Application Modelの略です。 EC2とかElasticBeansTalkとか使わずにWebAPI作って動かしたりします。 中身はLambdaなんで API Gateway + Lambda でいけるじゃん?と思いましたが。 ローカルでLambdaの実行環境作ってくれるし、RDSとかS3とかの環境もCloudFormationで作ってくれたりします、後は検証環境・本番環境などを分けてデプロイする仕組みも提供してくれるので割と至れり尽くせりです。 実際の中身は、 CloudFormation API Gateway Lambda IAMのルール を混ぜたものって考えればいいのかな。 API Gateway・・・一応わかる。 Lambda・・・一回作ったことはある。 IAM・・・まぁ大丈夫だろう。 CloudFormation・・・わからない。 AWSにかな疎いところが暴露されちゃうわけですが。 最初に Amazon SAMを使う場合はAccess KeyとSecret Access Keyが必要です。 IAMでユーザー作って発行しましょう。 更に AWS CLI も必要です。インストールしときましょう。 アカウント複数持ってたら「 AWS CLIでユーザー切り替え 」で切り替えときましょう。 この後SAM CLIのサンプルHelloWorld作ったりしますが。 それをデプロイするにはIAMユーザーに以下のポリシーが必要なので追加しておきましょう。 AWSCloudFormationFullAccess IAMFullAccess AWSLambda_FullAccess AmazonAPIGatewayAdministrator AmazonS3FullAccess AmazonEC2ContainerRegistryFullAccess これはSAMをデプロイするユーザーに最低限必要なポリシーになります。 SAM CLIインストール Amazon SAM自体はコマンドラインインターフェースが提供されてて ...

AWS CLIでユーザー切り替え

AWS CLIでユーザー切り替え AWS CLI でユーザーを切り替える手順。 取り合えず AWS CLI はインストールされているとして、新しくどこぞからIAMのアカウント払い出して貰ったら・・・困ったという話。 リモートワークで私のPCには複数のAWSアカウントがあってアレってなりました。 以下はWindows上のWSLで動かしてます。Ubuntuですね。 ユーザー登録 ユーザー登録は以下です。 $ aws configure --profile XXXXXXX AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXXXX AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Default region name [None]: ap-northeast-1 Default output format [None]: json 登録したユーザーの確認 $ cat ~/.aws/credentials 現在のユーザー情報の確認 $ aws configure list ユーザーを切り替える 環境変数で一時的なデフォルト切り替え。永続的に切り替えるのはどうやってやるんだっけ。 $ export AWS_PROFILE=XXXXXXX デフォルトユーザー切り替えずにコマンド使用する –profile オプション付ければそのユーザーで実行されます。 $ aws s3 ls --profile XXXXXXX AWS CLI、偶にしか使わないのですぐ忘れてしまいます。 AWSは基本ドキュメント英語なので頭に残らないのかなぁ。責任転嫁ですねはい。