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 TLS protocolos de autenticação mútua. 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 API as operações nos pontos finais do serviço. AWS IoT Core tem 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 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 AWS IoT função que aponta para uma função. IAM Essa IAM função é 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 do 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 IAM políticas apropriadas 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 UpdateRoleAliasoperação para configurar por quanto tempo as credenciais são válidas.
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 AWS os serviços. O serviço de troca de tokens fornece ao seu componente uma variável de ambienteAWS_CONTAINER_CREDENTIALS_FULL_URI
,, que define o URI para um servidor local que fornece AWS credenciais. Quando você cria um AWS SDK cliente, o cliente verifica essa variável de ambiente e se conecta ao servidor local para recuperar AWS as credenciais e as usa para assinar API solicitações. Isso permite que você use AWS SDKs outras ferramentas para chamar AWS serviços em seus componentes. Para obter mais informações, consulte Serviço de troca de token.
Importante
Support para adquirir AWS credenciais dessa forma foi adicionado ao AWS SDKs em 13 de julho de 2016. Seu componente deve usar uma AWS SDK versão que foi criada nessa data ou após essa data. Para obter mais informações, consulte Usando um suporte AWS SDK 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
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.
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)