Skip to content

Infrastructure Deploy

Fabio Gollinucci edited this page Jan 11, 2021 · 8 revisions

Deploy the application

Click on the link corresponding to your region from the main repository's readme and follow the setup wizard.

Otherwise open AWS Serverless Application Repository and search it using keyword "eliot"

Parameters values

All parameters can be configured as SSM Parameter using a custom syntax appending ssm: to the parameter path.

If value is stored into /my/parameter/path/value SSM Parameter use this value:

ssm:/my/parameter/path/value

(support both String and SecureString parameter types)

Stack parameter values are passed to Lambda functions environment variables, using Middy SSM middleware to evaluate values at runtime. Values threaded with this method are never stored in plain text, neither in Stack parameter of Lambda environment variable.

Suggested parameters:

  • GoogleAPIKey (String)
  • GoogleJWT (SecureString)
  • AlexaClientId (String)
  • AlexaClientSecret (SecureString)

OAuth configurations

Go to Specify Details section and fill the first section OAuth Credentials, a valid option could be an online string generator like random-string-generator or using pwgen command:

pwgen -n 20 # for ClientId parameter
pwgen -n 40 # for ClientSecret parameter 

Google Home configurations

Project ID

If you want to connect Google Home fill this section, grab your project id from the developer console url, you should be on a URL like https://console.actions.google.com/u/0/project/aaaaaa-00000/overview where aaaaaa-00000 is your project id.

Copy it and valorize the GoogleProjectId stack parameter.

API Key

To create a Google API Key required for proactive notification on devices lists change go to Cloud Platform Console, then go to the Projects page. Select the project that matches your smart home project id.

Enable the Google HomeGraph API.

Generate an API key. From the left navbar, select Credentials under APIs & Services. Click the Create Credentials button and select API key.

Now you can see and copy the API key, then valorize the GoogleAPIKey stack parameter.

JWT Token

In order to report Thing's state changes is required to create a JWT token to use Google HomeGraph API as an authenticated user. In the Cloud Platform Console, go to the Create service account key page.

From the Service account list, select New service account, then in the Service account name field enter a name and in the Service account ID field enter a ID. From the Role list, select Service Accounts > Service Account Token Creator and for Key type select the JSON option.

When click on Create button a download will start with the JWT token content, open that file and copy the content into GoogleJWT stack parameter.

Use a tool like JSON Minifier to minify the content and strip newlines into a single string value.

Alexa configurations

Skill ID

Got to Build tab and get your Skill id from the section 2. Smart Home service endpoint aside Your Skill ID label. It should be an ARN, similar to amzn1.ask.skill.aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa, copy it and set AlexaSkillId stack parameter.

Notification Endpoint

Got to Build tab and click on the link Permissions from the left menu. Enable the Send Alexa Events checkbox and copy the Client Id and Client Secret values into respective stack parameter.

Select the AlexaEndpoint closer to you, pay attention to this configuration, Alexa authentication is regional dependent, so if you select the wrong configuration the application will not be able to send events to Alexa endpoint.

Review and create

Proceed to tick the custom IAM roles and resource policies checkbox:

then press the Deploy button and wait until deploy is completed.