CmdID / aws / aws greengrass
aws greengrass create-device-definition-version
Creates a version of a device definition that has already been defined. AWS CLI reference
1 example 3 options Its page in the AWS CLI reference
Examples
To create a device definition version
The following create-device-definition-version example creates a device definition version and associates it with the specified device definition. The version defines two devices. Before you can create a Greengrass device, you must first create and provision the corresponding AWS IoT thing. This process includes the following iot commands that you must run to get the required information for the Greengrass command:
* Create the AWS IoT thing that corresponds to the device.
aws iot create-thing --thing-name "InteriorTherm"Identify--thing-nameThe name of the thing to create.Its output
{
"thingArn": "arn:aws:iot:us-west-2:123456789012:thing/InteriorTherm",
"thingName": "InteriorTherm",
"thingId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}* Create public and private keys and the device certificate for the thing. This example uses the create-keys-and-certificate command and requires write permissions to the current directory. Alternatively, you can use the create-certificate-from-csr command.
aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile "myDevice.cert.pem" --public-key-outfile "myDevice.public.key" --private-key-outfile "myDevice.private.key"Identify--set-as-activeSpecifies whether the certificate is active.Its output
{
"certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/66a415ec415668c2349a76170b64ac0878231c1e21ec83c10e92a18bd568eb92",
"certificatePem": "-----BEGIN CERTIFICATE-----\nMIIDWTCAkGgAwIBATgIUCgq6EGqou6zFqWgIZRndgQEFW+gwDQYJKoZIhvc...KdGewQS\n-----END CERTIFICATE-----\n",
"keyPair": {
"PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBzrqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqKpRgnn6yq26U3y...wIDAQAB\n-----END PUBLIC KEY-----\n",
"PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIABAKCAQEAqKpRgnn6yq26U3yt5YFZquyukfRjbMXDcNOK4rMCxDR...fvY4+te\n-----END RSA PRIVATE KEY-----\n"
},
"certificateId": "66a415ec415668c2349a76170b64ac0878231c1e21ec83c10e92a18bd568eb92"
}* Create an AWS IoT policy that allows iot and greengrass actions. For simplicity, the following policy allows actions on all resources, but your policy can be more restrictive.
aws iot create-policy --policy-name "GG_Devices" --policy-document "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"iot:Publish\",\"iot:Subscribe\",\"iot:Connect\",\"iot:Receive\"],\"Resource\":[\"*\"]},{\"Effect\":\"Allow\",\"Action\":[\"iot:GetThingShadow\",\"iot:UpdateThingShadow\",\"iot:DeleteThingShadow\"],\"Resource\":[\"*\"]},{\"Effect\":\"Allow\",\"Action\":[\"greengrass:*\"],\"Resource\":[\"*\"]}]}"Identify--policy-nameThe policy name.--policy-documentThe JSON document that describes the policy.Its output
{
"policyName": "GG_Devices",
"policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GG_Devices",
"policyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"iot:Publish\",\"iot:Subscribe\",\"iot:Connect\",\"iot:Receive\"],\"Resource\":[\"*\"]},{\"Effect\":\"Allow\",\"Action\":[\"iot:GetThingShadow\",\"iot:UpdateThingShadow\",\"iot:DeleteThingShadow\"],\"Resource\":[\"*\"]},{\"Effect\":\"Allow\",\"Action\":[\"greengrass:*\"],\"Resource\":[\"*\"]}]}",
"policyVersionId": "1"
}* Attach the policy to the certificate.
aws iot attach-policy --policy-name "GG_Devices" --target "arn:aws:iot:us-west-2:123456789012:cert/66a415ec415668c2349a76170b64ac0878231c1e21ec83c10e92a18bd568eb92"Identify--policy-nameThe name of the policy to attach.--targetThe identity to which the policy is attached.* Attach the thing to the certificate.
aws iot attach-thing-principal --thing-name "InteriorTherm" --principal "arn:aws:iot:us-west-2:123456789012:cert/66a415ec415668c2349a76170b64ac0878231c1e21ec83c10e92a18bd568eb92"Identify--thing-nameThe name of the thing.--principalThe principal, which can be a certificate ARN (as returned from the CreateCertificate operation) or an Amazon Cognito ID.After you create and configure the IoT thing as shown above, use the ThingArn and CertificateArn from the first two commands in the following example.
aws greengrass create-device-definition-version --device-definition-id "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222" --devices "[{\"Id\":\"InteriorTherm\",\"ThingArn\":\"arn:aws:iot:us-west-2:123456789012:thing/InteriorTherm\",\"CertificateArn\":\"arn:aws:iot:us-west-2:123456789012:cert/66a415ec415668c2349a76170b64ac0878231c1e21ec83c10e92a18bd568eb92\",\"SyncShadow\":true},{\"Id\":\"ExteriorTherm\",\"ThingArn\":\"arn:aws:iot:us-west-2:123456789012:thing/ExteriorTherm\",\"CertificateArn\":\"arn:aws:iot:us-west-2:123456789012:cert/6c52ce1b47bde88a637e9ccdd45fe4e4c2c0a75a6866f8f63d980ee22fa51e02\",\"SyncShadow\":true}]"Identify--device-definition-idThe ID of the device definition.--devicesA list of devices in the definition version.Its output
{
"Arn": "arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/devices/a1b2c3d4-5678-90ab-cdef-EXAMPLE22222/versions/a1b2c3d4-5678-90ab-cdef-EXAMPLE33333",
"Version": "a1b2c3d4-5678-90ab-cdef-EXAMPLE33333",
"CreationTimestamp": "2019-09-11T00:15:09.838Z",
"Id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}For more information, see Overview of the AWS IoT Greengrass group object model in the AWS IoT Greengrass Developer Guide.
Options
--amzn-client-tokenA client token used to correlate requests and responses.--device-definition-idThe ID of the device definition.--devicesA list of devices in the definition version.