[AWS] macOS Install AWS SAM CLI And Deploy Lambda
@ GordonWei · Monday, Jul 12, 2021 · 3 minute read · Update at Jul 12, 2021

Install AWS SAM CLI

Using brew

brew tap aws/tap 
brew install aws-sam-cli

Deploy APP To AWS Lambda

Step 1 Init Sam APP And Download Template

Can Use sam init Or sam init -r <runtime> -n <app-name>

sam init 

#or 

sam init -r <runtime> -n <function name>

In This Case, I Want Create Python 3.8 Lambda, So I Just Enter sam init -r python3.8 -n new-function

After Enter sam init, You Need To Choice Look Like These:

~/ » sam init -r python3.8 -n demo            
Which template source would you like to use?
	1 - AWS Quick Start Templates
	2 - Custom Template Location
Choice: 1
What package type would you like to use?
	1 - Zip (artifact is a zip uploaded to S3)
	2 - Image (artifact is an image uploaded to an ECR image repository)
Package type: 1

Cloning from https://github.com/aws/aws-sam-cli-app-templates

AWS quick start application templates:
	1 - Hello World Example
	2 - EventBridge Hello World
	3 - EventBridge App from scratch (100+ Event Schemas)
	4 - Step Functions Sample App (Stock Trader)
	5 - Elastic File System Sample App
Template selection: 1

    -----------------------
    Generating application:
    -----------------------
    Name: demo
    Runtime: python3.8
    Dependency Manager: pip
    Application Template: hello-world
    Output Directory: .

    Next steps can be found in the README file at ./README.md

Now You Can See Your Folder Like These

~/» ls                                  
README.md     __init__.py   events        hello_world   template.yaml tests

In This Case, Just Need hello_world And template.yaml

  • hello_world Folder

    • put your Code, reqirment.txt etc.

  • template.yam

    • write cloudformation format to deploy

After Write Code, We Need Build Image.

Build Image Using sam build --use-container --build-image Function1=amazon/aws-sam-cli-build-image-python3.8

~/ » sam build --use-container --build-image Function1=amazon/aws-sam-cli-build-image-python3.8
Starting Build inside a container
Building codeuri: ~/ runtime: python3.8 metadata: {} functions: ['ITHomeFunction']

Fetching public.ecr.aws/sam/build-python3.8:latest Docker container image......
Mounting ~/ as /tmp/samcli/source:ro,delegated inside runtime container

Build Succeeded

Built Artifacts  : .aws-sam/build
Built Template   : .aws-sam/build/template.yaml

Commands you can use next
=========================
[*] Invoke Function: sam local invoke
[*] Deploy: sam deploy --guided

Running PythonPipBuilder:ResolveDependencies
Running PythonPipBuilder:CopySource

Deploy Using sam deploy --guided

~/ » sam deploy --guided               

Configuring SAM deploy
======================

	Looking for config file [samconfig.toml] :  Found
	Reading default arguments  :  Success

	Setting default arguments for 'sam deploy'
	=========================================
	Stack Name [ITHome]:
	AWS Region [us-east-1]:
	#Shows you resources changes to be deployed and require a 'Y' to initiate deploy
	Confirm changes before deploy [Y/n]: y
	#SAM needs permission to be able to create roles to connect to the resources in your template
	Allow SAM CLI IAM role creation [Y/n]: y
	Save arguments to configuration file [Y/n]: y
	SAM configuration file [samconfig.toml]:
	SAM configuration environment [default]:

	Looking for resources needed for deployment: Found!

		Managed S3 bucket: aws-sam-cli-managed-default-samclisourcebucket-1n4q2wolub9lw
		A different default S3 bucket can be set in samconfig.toml

	Saved arguments to config file
	Running 'sam deploy' for future deployments will use the parameters saved above.
	The above parameters can be changed by modifying samconfig.toml
	Learn more about samconfig.toml syntax at
	https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.html

Initiating deployment
=====================
Uploading to Demo/befabc84a86957c750b68443c0db70c2.template  633 / 633  (100.00%)

Waiting for changeset to be created..

CloudFormation stack changeset
-------------------------------------------------------------------------------------------------
Operation                LogicalResourceId        ResourceType             Replacement
-------------------------------------------------------------------------------------------------
* Modify                 DemoFunctionSchedule   AWS::Lambda::Permissio   Conditional
                         1Permission              n
* Modify                 DemoFunctionSchedule   AWS::Events::Rule        False
                         1
* Modify                 DemoFunction           AWS::Lambda::Function    False
-------------------------------------------------------------------------------------------------

Changeset created successfully. arn:aws:cloudformation:us-east-1:120340392319:changeSet/samcli-deploy1622992910/276259dd-4bcf-43d3-9e77-ab038c68bac6


Previewing CloudFormation changeset before deployment
======================================================
Deploy this changeset? [y/N]: y

2021-06-06 23:22:16 - Waiting for stack create/update to complete

CloudFormation events from changeset
-------------------------------------------------------------------------------------------------
ResourceStatus           ResourceType             LogicalResourceId        ResourceStatusReason
-------------------------------------------------------------------------------------------------
UPDATE_IN_PROGRESS       AWS::Lambda::Function    ITHomeFunction           -
UPDATE_COMPLETE          AWS::Lambda::Function    ITHomeFunction           -
UPDATE_COMPLETE          AWS::CloudFormation::S   ITHome                   -
                         tack
UPDATE_COMPLETE_CLEANU   AWS::CloudFormation::S   ITHome                   -
P_IN_PROGRESS            tack
-------------------------------------------------------------------------------------------------

Successfully created/updated stack - ITHome in us-east-1

GordonWei's blog

.net .net-framworke-3.5 4g-dongle 4g-lte 518 across-project active-directory activity ad add-repo alcatel alpine always-free amazon amd-apu ap apache arm associate aws aws-cdk aws-certified aws-cli aws-efs aws-lex aws-nuke aws-s3 aws-saa aws-security aws-ssm aws-sso aws帳單整合 bind bind-view blackbox blog brew bridge-network bucket-sync build-image calculator catalina centos centos-7 centos7 cfn-flip change-swap chatbot cidr cidrcalculator clean-cache clean-resources cloudfront command consolidated-billing controller cups curl deeplearning delete-sns developer directory-service dlink-dcs930l dns-server docker docker-build docker-compose docker-error docker-image docker-setting-proxy domain dotnet dvac01 ec2 ec2-mount-efs ec2-ssm elk enabled error export-ovf exporter fail2ban fat32-to-ntfs freeradius funny gcloud gcp gcp-change-account gcs git git-error github github-error google-adsens google-cloud-platform grafana grub hh41 homebridge homekit homekit-ui http https huawei-e3372 hugo hugo-blog hugo-post instances ios ios-run-python iphone-backup ipv6-apt iso-to-usb job-bank json json-dumps keras kibana kvm lambda latin ldap ldap3 letsencrypt libvirt likecoin linux linux-dotnet linux-vnc loop lte-dongle mac mac-backup macos mail-server mi-home migration mongodb monitor ms-ad multiple-account mysql mysql-error mysql-federated netapp npm npm-upgrade ns ntfs ntp-server oai on-premise openvpn openwebmail openwrt options oracle-cloud orange-pi organizations peering permission-deny pip-error pip-install port-25 printer prometheus proxy-server python python-access-ad python-ftp python-get-nowtime python-time python2 python3 radius radius-mysql radius3.0 raspberry-pi raspberry-pi-zero rc.local redhat repo request reset-password resize-img resize-sd-partition root router rpi-camera s3 s3-error s3-policy sam-cli samba samba-error script scs-c01 security selinux session session-manage shell sms sms-log smtp sns solution-architect-associate ssh-server ssl ssl-error ssm sudo sysops system-manager systems-manager table-sync time-machine time.gmtime time_wait timezone tls totolink typeerror ubuntu ubuntu-18.04 ubuntu16.04 ubuntu20.04 unifi unifi-ac-lite uniout update-error usb usb-install virsh virt visudo vmware-player volume-lock vpc vpn vpn-server web-server wifi win-server win10 windows windows-server windows-server-2019 windows-ssh-server xiaomi yaml zimbra 廣告 永久免費 無法更新索引 無線分享器 燒光碟 自動搶 阿爾卡特
aws
gcp
iot
mac
oci

© 2021 GordonWei's Blog

Powered by Hugo with theme Dream.

Experience

2021 - Now / 博弘科技 - 資深SRE工程師

2020 - 2021 / 趣遊科技 - 資深SRE工程師

2019 - 2020 / 104人力銀行 - DevOps 工程師

2018 - 2019 / 104人力銀行 - Net 工程師

2016 - 2018 / 全林實業股份有限公司 - 系統部協理

2015 – 2016 / 恩據優資訊工作室 – 負責人

2014 – 2015 / 安盟科技股份有限公司 – 資深IT工程師

2013 – 2014 / 上海鷺豐農業科技有限公司 – 系統工程師

2010 – 2012 / 104 人力銀行 – 維護工程師

2008 - 2009 / 典匠資訊 – MIS

Projects

  • 2021/02 - 2021/12 博弘雲端 - 家樂福數位轉型
  • 2020/10 - 2020/11 趣遊科技 - 產品container化
  • 2020/09 - 2020/10 趣遊科技 - 產品架構重構
  • 2020/08 - 2020/09 趣遊科技 - 規範訂製
  • 2019/09 - 2020/07 104人力銀行 - AWS Account 回收暨IaC專案
  • 2018/10 - 2018/12 104人力銀行 - DR Site 協助建置
  • 2018/03 - 2018/05 全林實業 - 工研院人臉辨識與使用者行為分析專案
  • 2018/04 - 2018/05 全林實業 - 嘉義公車站無線網路專案
  • 2017/06 - 2018/05 全林實業 - 新加坡無線網路專案
  • 2017/05 - 2018/05 全林實業 - 捷運無線網路專案
  • 2017/01 - 2017/04 全林實業 - 弋楊科技遊覽車專案
  • 2016/12 - 2017/04 全林實業 - 亞太好行網重構、建置
  • 2016/12 - 2017/02 全林實業 - 愛巴士無線網路專案
  • 2016/11 - 2017/01 全林實業 - 泰國Free AD Wifi專案
  • 2016/10 - 2016/12 全林實業 - 桃園客運無線網路專案
  • 2016/09 - 2016/12 全林實業 - 怡客咖啡廳無線網路專案
  • 2016/07 - 2017/07 全林實業 - 主要系統規劃、重構與建置
  • 2014/09 - 2015/04 安盟科技 - 機房架構規劃rebuild / CRM系統開發客製
  • 2013/07 – 2014/07 上海鷺豐農業科技 - 研發農業環境監控系統(Arduino)
  • 2011/11 – 2012/06 104人力銀行 - 協助導入虛擬化技術專案 (Citrix Xen Server、Desktop)

About

GordonWei

小弟是一位沒錢又沒閒的普通人, 只能靠自學以及不斷的實作來吸取經驗。

希望可以把自己的經驗留存下來,讓彼此的能力更進一步!!

認證