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

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 iotRoleAlias parâmetro doNúcleo Greengrass.

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 obter mais informações sobre como configurar a função de troca de tokens, consulteAutorize os dispositivos principais a interagir com os serviços 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 UpdateRoleAliasoperação para configurar a duração em que as credenciais são válidas.

AWS IoT Greengrassfornece 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 AWS os serviços. 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 ter mais informações, consulte Serviço de troca de tokens.

Importante

Support para adquirir AWS credenciais dessa forma foi adicionado aos AWS SDKs em 13 de julho de 2016. Seu componente deve usar uma versão do AWS SDK criada nessa data ou após essa data. Para obter mais informações, consulte Como usar um AWS SDK compatível no Amazon Elastic Container Service Developer Guide.

Para adquirir AWS credenciais em seu componente personalizado, defina aws.greengrass.TokenExchangeService como uma dependência na receita do componente. O exemplo de receita a seguir define um componente que instala o boto3 e executa um script Python que usa AWS credenciais 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 ter mais informações, consulte Autorize os dispositivos principais a interagir com os serviços 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)