Interaja com AWS os serviços - AWS IoT Greengrass

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Interaja com AWS os serviços

Os dispositivos principais do Greengrass usam certificados X.509 para se conectar ao AWS IoT Core usando protocolos de autenticação TLS mútuos. Esses certificados permitem que os dispositivos interajam AWS IoT sem AWS credenciais, que normalmente incluem um ID de chave de acesso e em uma chave de acesso secreta. Outros produtos da AWS exigem credenciais da AWS em vez de certificados X.509 para chamar operações de API nos endpoints do serviço. O AWS IoT Core tem um provedor de credenciais que permite que os dispositivos usem seu certificado X.509 para autenticar solicitações da AWS. O provedor de credenciais do AWS IoT autentica os dispositivos usando um certificado X.509 e emite credenciais da AWS na forma de um token de segurança temporário e de privilégio limitado. Os dispositivos podem usar esse token para assinar e autenticar qualquer AWS solicitação da. Isso elimina a necessidade de armazenar AWS credenciais nos dispositivos principais do Greengrass. Para mais informações, consulte Autorizar de chamadas diretas para serviços da AWS no Guia do desenvolvedor do AWS IoT Core.

Para obter credenciais do AWS IoT Greengrass, os dispositivos principais usam um alias de função que aponta para uma AWS IoT função do IAM. Essa função do IAM é chamada de função de troca de tokens. Você cria o alias da função e a função de troca de tokens ao instalar o software AWS IoT Greengrass Core. Para especificar o alias de função que um dispositivo principal usa, configure o parâmetro iotRoleAlias do Greengrass nucleus.

O provedor de AWS IoT credenciais assume a função de troca de tokens em seu nome para fornecer AWS credenciais aos dispositivos principais. Você pode anexar políticas apropriadas do IAM a essa função para permitir que seus dispositivos principais acessem seus AWS recursos, como artefatos de componentes em buckets do S3. Para mais informações sobre como configurar o perfil de troca de tokens, consulte Autorize os dispositivos principais a interagir com os serviços da AWS.

Os principais dispositivos do Greengrass armazenam AWS as credenciais na memória e, por padrão, as credenciais expiram após uma hora. Se o software AWS IoT Greengrass principal for reiniciado, ele deverá buscar as credenciais novamente. Você pode usar a operação UpdateRoleAlias para configurar a duração em que as credenciais são válidas.

O AWS IoT Greengrass fornece um componente público, o componente do serviço de troca de tokens, que você pode definir como uma dependência em seu componente personalizado para interagir com os produtos da AWS. O serviço de troca de tokens fornece ao seu componente uma variável de ambiente,AWS_CONTAINER_CREDENTIALS_FULL_URI, que define o URI para um servidor local que fornece AWS credenciais. Quando você cria um cliente AWS SDK, o cliente verifica essa variável de ambiente e se conecta ao servidor local para recuperar AWS as credenciais e as usa para assinar solicitações de API. Isso permite que você use AWS SDKs e outras ferramentas para chamar AWS serviços em seus componentes. Para obter mais informações, consulte Serviço de troca de token.

Importante

Em 13 de julho de 2016, o suporte para adquirir credenciais da AWS dessa forma foi incluído nos AWS SDKs. Seu componente deve usar uma versão do AWS SDK criada a partir dessa data. Para obter mais informações, consulte Como usar um AWS SDK com suporte no Guia do desenvolvedor do Amazon Elastic Container Service.

Para adquirir credenciais da AWS em seu componente personalizado, defina aws.greengrass.TokenExchangeService como uma dependência na fórmula do componente. O exemplo de fórmula a seguir define um componente que instala o boto3 e executa um script Python que usa credenciais da AWS do serviço de troca de tokens para listar buckets do Amazon S3.

nota

Para executar esse componente de exemplo, seu dispositivo deve ter a s3:ListAllMyBuckets permissão. Para obter mais informações, consulte Autorize os dispositivos principais a interagir com os serviços da AWS.

JSON
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.ListS3Buckets", "ComponentVersion": "1.0.0", "ComponentDescription": "A component that uses the token exchange service to list S3 buckets.", "ComponentPublisher": "Amazon", "ComponentDependencies": { "aws.greengrass.TokenExchangeService": { "VersionRequirement": "^2.0.0", "DependencyType": "HARD" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "install": "pip3 install --user boto3", "Run": "python3 -u {artifacts:path}/list_s3_buckets.py" } }, { "Platform": { "os": "windows" }, "Lifecycle": { "install": "pip3 install --user boto3", "Run": "py -3 -u {artifacts:path}/list_s3_buckets.py" } } ] }
YAML
--- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.ListS3Buckets ComponentVersion: '1.0.0' ComponentDescription: A component that uses the token exchange service to list S3 buckets. ComponentPublisher: Amazon ComponentDependencies: aws.greengrass.TokenExchangeService: VersionRequirement: '^2.0.0' DependencyType: HARD Manifests: - Platform: os: linux Lifecycle: install: pip3 install --user boto3 Run: |- python3 -u {artifacts:path}/list_s3_buckets.py - Platform: os: windows Lifecycle: install: pip3 install --user boto3 Run: |- py -3 -u {artifacts:path}/list_s3_buckets.py

Esse componente de exemplo executa o seguinte script Python, list_s3_buckets.py que lista os buckets do Amazon S3.

import boto3 import os try: print("Creating boto3 S3 client...") s3 = boto3.client('s3') print("Successfully created boto3 S3 client") except Exception as e: print("Failed to create boto3 s3 client. Error: " + str(e)) exit(1) try: print("Listing S3 buckets...") response = s3.list_buckets() for bucket in response['Buckets']: print(f'\t{bucket["Name"]}') print("Successfully listed S3 buckets") except Exception as e: print("Failed to list S3 buckets. Error: " + str(e)) exit(1)