Build a Skill End-to-end Using an Alexa-hosted Skill
When you create an Alexa skill, you store your code and resources yourself. However, you can create an Alexa-hosted skill, and Alexa stores your code and resources on AWS for you. With an Alexa-hosted skill, you can get started quickly by using one of the skill templates available in the developer console. When you create an Alexa-hosted skill, you develop your skill in an online code editor in the developer console. You can also use the Alexa Skills Kit Command Line Interface (ASK CLI) to create and manage Alexa-hosted skills.
With an Alexa-hosted skill, you can build, edit, and publish a skill without leaving the developer console. You use the online code editor to edit the code for your skill and deploy it directly to your AWS Lambda endpoints.
When you create an Alexa-hosted skill, Alexa provisions the following:
- AWS Lambda endpoints in all three Alexa service regions
- An Amazon S3 bucket for media storage
- An Amazon DynamoDB table for persisting data
- An AWS CodeCommit repository
You don't need an AWS account to create an Alexa-hosted skill. Alexa provisions the AWS resources that you need directly from the Alexa developer console. Alexa places your files and resources in an individual account, separate from the accounts of other users, and your files are never shared with other users. If you want to use additional AWS services, or if your usage exceeds the usage limits, you can provision the additional resources in your own AWS account. For details, see Use Personal AWS Resources with Your Alexa-hosted Skill.
When you create your skill, you get an AWS CodeCommit repository for managing your code, which you can access by using the ASK CLI to edit your skill. For details, see Create and Manage Alexa-hosted Skills Using the ASK CLI.
For a video introduction to Alexa-hosted skills, see Setting Up an Alexa-hosted Skill on YouTube.
Considerations for Alexa-hosted skills
Before you create your Alexa-hosted skill, consider the following:
- You can only build a skill that uses a custom voice interaction model as an Alexa-hosted skill. Currently, you can't create an Alexa-hosted skill that uses a pre-built voice interaction model, such as a Smart Home skill.
- You can build an Alexa-hosted skill with Node.js version 10.x or Python version 3.7. When you create your skill, you select the runtime for your skill. After you choose the runtime for a skill, you can't change it.
- You can provision your S3 and DynamoDB resources close to your skill users to reduce the perceived latency of your skill. For details, see Hosting your skill resources in different AWS Regions.
Creating an Alexa-hosted skill
You can create an Alexa-hosted skill in the following ways:
- To create a new Alexa-hosted skill by using the developer console and choosing an available template, see Create an Alexa-hosted skill in the console.
- To create a new Alexa-hosted skill by importing a skill project from a public Git repository, see Import an Alexa-hosted Skill from a Public Git Repository.
- To create a new Alexa-hosted skill by using the ASK CLI, see Create and Manage Alexa-hosted Skills Using the ASK CLI.
- To migrate an existing custom-model skill to an Alexa-hosted skill, see Convert an existing skill to an Alexa-hosted skill.
Hosting your skill resources in different AWS Regions
To reduce perceived latency when accessing your skill, Alexa provisions three AWS Lambda endpoints for your Alexa-hosted skill. Alexa provisions a Lambda endpoint for your skill in each of the following regions:
- US East (N. Virginia) us-east-1
- Europe (Ireland) eu-west-1
- US West (Oregon) us-west-2
You can provision your Amazon S3 and DynamoDB resources in any of these regions. We recommend that you choose the region closest to your users by using the following table. The table also determines the default hosting region that appears in the console when you create your skill.
|Skill Language||Marketplace||Alexa Region||Recommended AWS Region|
|English (AU)||.com.au||Far East||US West (Oregon) us-west-2|
|English (CA)||.ca||North America||US East (N. Virginia) us-east-1|
|English (IN)||.in||Europe||Europe (Ireland) eu-west-1|
|English (UK)||.co.uk||Europe||Europe (Ireland) eu-west-1|
|English (US)||.com||North America||US East (N. Virginia) us-east-1|
|French (CA)||.ca||North America||US East (N. Virginia) us-east-1|
|French (FR)||.fr||Europe||Europe (Ireland) eu-west-1|
|German (DE)||.de||Europe||Europe (Ireland) eu-west-1|
|Hindi (IN)||.in||Europe||Europe (Ireland) eu-west-1|
|Italian (IT)||.it||Europe||Europe (Ireland) eu-west-1|
|Japanese (JP)||.com.jp||Far East||US West (Oregon) us-west-2|
|Portuguese (BR)||.com.br||North America||US East (N. Virginia) us-east-1|
|Spanish (ES)||.es||Europe||Europe (Ireland) eu-west-1|
|Spanish (MX)||.com.mx||North America||US East (N. Virginia) us-east-1|
|Spanish (US)||.com||North America||US East (N. Virginia) us-east-1|
Your developer.amazon.com account is limited to 75 Alexa-hosted skills. When there are 75 Alexa-hosted skills on your account, you must delete an existing Alexa-hosted skill from your account before you can create another Alexa-hosted skill.
Your Alexa-hosted skill uses AWS resources. Your resource usage is limited to the AWS Free Tier. The following limits apply to each Alexa account.
- AWS Lambda: 1 million free AWS Lambda requests and 3.2 million seconds of compute time per month.
- Amazon S3: 5 GB of Amazon S3 storage, 20,000 get requests, 2,000 put requests, and 15 GB of data transfer out per month.
- Amazon DynamoDB: 25 GB of Amazon DynamoDB storage, and 1 GB of data transfer out per month.
- AWS CodeCommit: 50 GB-month of storage and 10,000 Git requests per month.
The monthly AWS usage for your hosted skills appears on the Hosting page of the Alexa developer console. You can also see your AWS resource usage from the Code tab by clicking on Usage in the toolbar.
If your usage exceeds the AWS Free Tier limits, you have 30 days to bring usage under the limit by moving at least one of your skills to a personal AWS account or other cloud services account. If you don't bring your usage under the specified limits, your skill might be removed from the Alexa skill store. If your skill is flagged as abusing provisioned resources, your skill might be removed from the skill store before 30 days.
Skill endpoints and deployment
Alexa provisions an AWS Lambda endpoint for your Alexa-hosted skill in each Alexa service region. If you change the default hosted endpoint for your skill, your skill is no longer an Alexa-hosted skill and the code editor in the console does not deploy to the new endpoint. If you change the default endpoint, you can revert to the Alexa-hosted endpoints by using the option in the code editor in the console.
After your Alexa-hosted skill is published, two stages of your skill appear in the console: one for the live stage and one for the development stage. In the development stage for your skill, you can use the code editor to edit, save and deploy code to the development version of your AWS Lambda endpoint. This action does not affect the live endpoint for your skill. You can then go to the Test tab and test your changes.
If you change the voice model for your skill, you must submit your skill for re-certification. If you change only the code for your skill, you can promote code from development to live by clicking the Promote to live button in the code editor. This action replaces the live code for your published skill.
To make a quick fix to live code for an Alexa-hosted skill, we recommend that you first make changes in the development stage, test the changes, and then promote the changes to the live endpoint for your skill. If you want to make a quick fix to your live code and your development code has other changes that you do not want to promote, you can make your fix directly to the live endpoint. However, you are not able to test your changes first. To make a fix directly to your live endpoint, open the code editor for the live stage, edit your code, and then click Deploy to live.