{"id":23270454,"url":"https://github.com/umanari145/sam","last_synced_at":"2026-04-17T15:33:00.323Z","repository":{"id":148908087,"uuid":"281847287","full_name":"umanari145/sam","owner":"umanari145","description":"sam(go+labmda+apigateway)","archived":false,"fork":false,"pushed_at":"2022-07-17T15:09:34.000Z","size":11985,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-04-14T11:56:18.316Z","etag":null,"topics":["apigateway","aws","aws-lambda","go","serverless"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/umanari145.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-23T04:08:06.000Z","updated_at":"2024-04-14T11:56:18.317Z","dependencies_parsed_at":null,"dependency_job_id":"a0308584-52f9-4b7b-8174-041feecd583a","html_url":"https://github.com/umanari145/sam","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umanari145%2Fsam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umanari145%2Fsam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umanari145%2Fsam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umanari145%2Fsam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/umanari145","download_url":"https://codeload.github.com/umanari145/sam/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247463808,"owners_count":20942940,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apigateway","aws","aws-lambda","go","serverless"],"created_at":"2024-12-19T18:51:43.272Z","updated_at":"2026-04-17T15:32:55.301Z","avatar_url":"https://github.com/umanari145.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# samを使ったLambda(go言語)+APIGateway+dynamoDB(←結局使わず・・)\n\n## sam インストール\n\n```\nbrew tap aws/tap\nbrew install aws-sam-cli\nsam --version\n#SAM CLI, version 1.0.0\n```\n\n## ファイル構成\n\n- lambdaSample(lambdaファイル)\n    - build.sh ビルド\n    - go.mod パッケージ管理\n    - go.sum パッケージ記録\n    - main.go エントリーポイント\n    - main_test.go テストファイル\n- event_api.json apigatewayのリクエストのサンプルファイル\n- lambda_env_vars.json.dummy 環境変数のサンプル\n- Makefile ビルドやデバッグなどのファイル\n- template.yaml samのサンプルファイル\n\n## sam コマンド\n\nプロジェクトフォルダ\u0026\u0026テンプレート作成\n```\nsam init --runtime go1.x(言語をいろいろ選べる) --name プロジェクト名\n```\n\n\napigatewayのダミーリクエストファイル作成\n```\nsam local generate-event apigateway aws-proxy \u003e event_api.json\n```\n\nlambdaローカル実行\n```\nsam local invoke LambdaSampleFunction --event event_api.json --debug -l sample.log\n\n#実行結果 dockerのイメージをダウンロードして実行しているようで4〜5分かかる。初回はもっと。\nupdating: main (deflated 49%)\nInvoking main (go1.x)\n・・・・・・・・・・・・・・\nSTART RequestId: Version: $LATEST\n2020/07/23 04:23:17 \u003cnil\u003e\nmorigami\nFunction 'LambdaSampleFunction' timed out after 5 seconds\n\n```\n\n\n## ローカル開発\n\n\n### lambda\n*ソースかえても`make build`しないと結果が変わらない\n```\nmake debug\n```\n\n- 自動でビルドファイル構築\u0026 sam local invoke \n\n連携の時はapigatewayから呼ぶのと、単独だとテストの方が使えるため、あまり意味がないかも・・・・\n\n### apiGetway\nビルド\u0026ローカルAPI\u003cbr\u003e\n#下記コマンドは全てルートディレクトリ(README.mdと同じディレクトリ)で。非コンテナ内\n```\nmake build\nsam local start-api (--env-vars vars.json:環境変数を外部化)\n\nMounting LambdaSampleFunction at http://127.0.0.1:3000/sample [GET]\nYou can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions, changes will be reflected instantly/automatically. You only need to restart SAM CLI if you update your AWS SAM template\n2020-07-23 16:56:18  * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)\n\n#別ウィンドウで下記コマンドを叩く\ncurl http://127.0.0.1:3000/sample\n#最初のコマンド実行時はbuildはものすごく時間がかかるので要注意\n#その後、api開いた画面でログが出ていればOK\n```\n* ローカルAPIの場合認証は入らない\n\n## ビルド　\u0026\u0026 デプロイ\n#下記コマンドは全てルートディレクトリ(README.mdと同じディレクトリ)で。非コンテナ内\n```\nmake build \n#ここで.aws-samに資材ができる(templateを更新してもbuildしないと上書きされない)\n\nsam deploy --guided\n#deploy前準備のようなもの\n#LambdaSampleFunction may not have authorization defined, Is this okay?→y\n#Deply this changeset? yで実際にデプロイ\n```\n\n* apiKeyに関して`AWS::ApiGateway::UsagePlan`や`AWS::ApiGateway::UsagePlanKey`も必要になる(設定が色々面倒)\n\n本番のAPI(開発はx-api-keyはなくてもOK)\n```\ncurl  https://xxxxxxxxxxxx.execute-api.us-east-1.amazonaws.com/Prod/area/2740077 \\\n -H 'x-api-key: APIキー'\n```\n\n## デプロイ時のパラメータ上書き\n\n```\nsam deploy --guided --parameter-overrides \\\nDbType=DBタイプ \\\nPostgresDbhost=ポート\nPostgresDbname=DB名 \\\nPostgresDbuser=DBユーザー \\\nPostgresPassword=DBパスワード\n```\n## dynamoDB\n\ndockerで仮装環境を構築\n\nGUI\nhttp://localhost:8001/\n\n\nテーブル確認\n```\naws dynamodb \\\nlist-tables \\\n--endpoint-url http://localhost:8000 \n```\n\nテーブル作成\n\n```\naws dynamodb \\\ncreate-table \\\n--endpoint-url http://localhost:8000 \\\n--cli-input-json file://dynamoDB/script/area.json\n\n#--cli-input-json ファイルパスを表示　dynamoDB/script/area.json\n```\n\n#全件取得\n```\naws dynamodb scan \\\n--endpoint-url http://localhost:8000 \\\n--table-name テーブル名\n```\n\n#特定キーで取得\n```\naws dynamodb get-item \\\n--endpoint-url http://localhost:8000 \\\n--table-name テーブル名 \\\n--key '{\"ID\":{\"N\":\"1\"}}'\n```\n\n#保存\n```\naws dynamodb put-item \\\n    --endpoint-url http://localhost:8000 \\\n    --table-name テーブル名 \\\n    --item '{\n        \"product_id\": {\"N\": \"3\"},\n        \"product_name\": {\"S\": \"本\"} ,\n        \"price_min\": {\"N\": \"111\"},\n        \"price_max\": {\"N\": \"222\"}\n      }'\n```\n\nboto3\n\nhttps://boto3.amazonaws.com/v1/documentation/api/latest/index.html\n\n## postgres メモ\nDBにログインした後、\nCSV→DBへのインサート\ncsv \\copy area (zip,pref_kana,city_kana,town_kana,pref,city,town) from '/docker-entrypoint-initdb.d/KEN_ALL.CSV' with csv header\n\n## apiSampleのサンプルは以下を参考に\n\nhttps://github.com/classmethod/aws-for-everyone/tree/master/chapter03/aws-for-everyone-sls\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fumanari145%2Fsam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fumanari145%2Fsam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fumanari145%2Fsam/lists"}