

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á.

# Use AWS IoT SiteWise APIs na borda
<a name="edge-apis"></a>

AWS IoT SiteWise fornece um subconjunto do ITS APIs, juntamente com o específico da borda APIs, permitindo uma interação perfeita com os modelos de ativos e seus ativos associados implantados na borda. Esses modelos de ativo devem ser configurados para serem executados na borda. Para ter mais informações e conferir instruções detalhadas sobre esse processo de configuração, consulte [Configurar um modelo de ativo para processamento de dados no SiteWise Edge](edge-processing.md#process-gateway-data-edge).

Depois de configurá-los APIs, você pode recuperar dados abrangentes sobre seus modelos de ativos e ativos individuais. A recuperação de informações sobre modelos de ativo, ativos, painéis, portais e projetos pode ajudar você a monitorar portais e painéis implantados, além de acessar dados de ativo coletados ao nível da borda. Isso fornece um host central em sua rede para interações AWS IoT SiteWise sem exigir uma chamada de API da web. 

**Topics**
+ [Todos os dispositivos AWS IoT SiteWise Edge disponíveis APIs](edge-apis-available.md)
+ [Somente Edge APIs para uso com AWS IoT SiteWise dispositivos Edge](edge-local-apis.md)
+ [Ative o CORS on AWS IoT SiteWise Edge APIs](enable-cors-edge-apis.md)
+ [Configurar tempos limite de sessão para AWS IoT SiteWise o Edge](edge-apis-session-timeout.md)
+ [Tutorial: Listar modelos de ativos em um gateway AWS IoT SiteWise Edge](edge-apis-tutorial.md)

# Todos os dispositivos AWS IoT SiteWise Edge disponíveis APIs
<a name="edge-apis-available"></a>

AWS IoT SiteWise fornece uma variedade de dispositivos de ponta APIs para que você possa concluir tarefas localmente no dispositivo. Algumas das vantagens disponíveis APIs incluem a recuperação de modelos de ativos, a criação e atualização de propriedades de ativos e o envio de fluxos de dados para a nuvem. Ao aproveitá-las APIs, você pode criar soluções que possam operar em ambientes com conectividade de rede intermitente ou limitada.

## Disponível AWS IoT SiteWise APIs
<a name="edge-apis-available-sw"></a>

Os itens a seguir AWS IoT SiteWise APIs estão disponíveis em dispositivos Edge:
+ [ListAssetModels](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssetModels.html)
+ [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)
+ [ListAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssets.html)
+ [DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html)
+ [DescribeAssetProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetProperty.html)
+ [ListAssociatedAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssociatedAssets.html)
+ [GetAssetPropertyAggregates](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyAggregates.html)
+ [GetAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValue.html)
+ [GetAssetPropertyValueHistory](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValueHistory.html)
+ [ListDashboards](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListDashboards.html)
+ [ListPortals](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListPortals.html)
+ [ListProjectAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListProjectAssets.html)
+ [ListProjects](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListProjects.html)
+ [DescribeDashboard](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeDashboard.html)
+ [DescribePortal](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribePortal.html)
+ [DescribeProject](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeProject.html)

## Disponível somente para borda APIs
<a name="edge-apis-available-local"></a>

Os itens a seguir APIs são usados localmente em dispositivos na borda:
+ [Authenticate](edge-local-apis.md#edge-local-apis-authenticate) — Use essa API para obter as credenciais temporárias do SigV4 que você usará para fazer chamadas de API.

# Somente Edge APIs para uso com AWS IoT SiteWise dispositivos Edge
<a name="edge-local-apis"></a>

Além dos AWS IoT SiteWise APIs que estão disponíveis na borda, existem outros específicos para a borda. Essas bordas específicas APIs são descritas abaixo.

## Authenticate
<a name="edge-local-apis-authenticate"></a>

Obtém as credenciais do gateway SiteWise Edge. Você precisará adicionar usuários locais ou se conectar ao seu sistema usando LDAP ou um grupo de usuários Linux. Para obter mais informações sobre como adicionar usuários, consulte [LDAP](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app) ou [grupo de usuários Linux](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app).

### Sintaxe da solicitação
<a name="authenticate-request-syntax"></a>

```
POST /authenticate HTTP/1.1
Content-type: application/json
{
  "username": "string",
  "password": "string",
  "authMechanism": "string"
}
```

### Parâmetros da solicitação de URI
<a name="authenticate-request-parameters"></a>

A solicitação não usa nenhum parâmetro de URI.

### Corpo da solicitação
<a name="authenticate-request-body"></a>

A solicitação aceita os dados a seguir no formato JSON.

**username**  
O nome de usuário usado para validar a chamada de solicitação.  
Tipo: String  
Obrigatório: Sim

**password**  
A senha do usuário solicitando as credenciais.  
Tipo: String  
Obrigatório: Sim

**authMechanism**  
O método de autenticação para validar esse usuário no host.  
Tipo: string  
Valores válidos: `ldap`, `linux`, `winnt`  
Obrigatório: sim

### Sintaxe da resposta
<a name="authenticate-response-syntax"></a>

```
HTTP/1.1 200
Content-type: application/json
{
  "accessKeyId": "string",
  "secretAccessKey": "string",
  "sessionToken": "string",
  "region": "edge"
}
```

### Elementos de resposta
<a name="authenticate-response-elements"></a>

Se a ação for bem-sucedida, o serviço retornará uma resposta HTTP 200.

Os dados a seguir são retornados no formato JSON.

**accessKeyId**  
O ID da chave de acesso que identifica as credenciais de segurança temporárias.  
Restrições de tamanho: tamanho mínimo de 16. O tamanho máximo é 128.  
Padrão: `[\w]*`

**secretAccessKey**  
A chave de acesso secreta para assinar solicitações.  
Tipo: string

**sessionToken**  
O token que os usuários devem passar para a API do serviço para usar as credenciais temporárias.  
Tipo: string

**region**  
A região que você está direcionando para chamadas de API.  
Tipo: CONSTANT - `edge`

### Erros
<a name="authenticate-errors"></a>

**IllegalArgumentException**  
A solicitação foi rejeitada porque o documento do corpo fornecido estava malformado. A mensagem de erro descreve o erro específico.  
Código de status HTTP: 400

**AccessDeniedException**  
O usuário não tem credenciais válidas com base no provedor de identidade atual. A mensagem de erro descreve o mecanismo de autenticação.  
Código de status HTTP: 403

**TooManyRequestsException**  
A solicitação atingiu o limite de tentativas de autenticação. A mensagem de erro contém a quantidade de tempo de espera até que novas tentativas de autenticação sejam feitas.  
Código de status HTTP: 429

# Ative o CORS on AWS IoT SiteWise Edge APIs
<a name="enable-cors-edge-apis"></a>

A ativação do CORS (Cross-Origin Resource Sharing) no AWS IoT SiteWise Edge APIs permite que os aplicativos da web se comuniquem diretamente com eles APIs em diferentes domínios. Isso permite integração perfeita, troca de dados em tempo real e acesso a dados entre domínios sem servidores intermediários ou soluções alternativas. As configurações do CORS podem ser definidas para especificar origens permitidas, garantindo acesso controlado entre origens. 

**nota**  
O CORS está disponível para a versão 3.3.1 e posterior do Este recurso está disponível para a versão 3.3.1 e posterior do componente. `aws.iot.SiteWiseEdgeProcessor` Para obter mais informações, consulte o [AWS IoT SiteWise processador](https://docs.aws.amazon.com/greengrass/v2/developerguide/iotsitewise-processor-component.html) no *Guia do AWS IoT Greengrass Version 2 desenvolvedor*.

**Para habilitar o CORS no SiteWise Edge APIs**

1. Navegue até o [console do AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. No painel de navegação, escolha **Gateways de borda**.

1. Selecione o gateway SiteWise Edge para o qual você deseja habilitar o CORS. Você pode ativar o CORS no tipo AWS IoT Greengrass V2 de implantação.

1. Na seção **Configuração do gateway**, escolha o dispositivo **principal do Greengrass** associado.

1. Na guia **Implantações**, em Dispositivos **Greengrass**, selecione o link de implantação apropriado.

1. Em **Ações**, escolha **Revisar e, em** seguida, **Revisar implantação.**
**Importante**  
A criação de uma configuração revisada habilitada para CORS substitui a configuração atual do dispositivo.

1. Na **Etapa 1, Especifique o destino**, forneça um **Nome** opcional para identificar a implantação. 

1. **Na **Etapa 2, Selecionar componentes - opcional**, você pode deixar todas as seleções atuais como estão e escolher Avançar.**

1. Na **Etapa 3, Configurar componentes - opcional**, selecione **aws.iot. SiteWiseEdgeProcessor**e escolha **Configurar componente**.

1. Na seção Atualização de configuração, em Configuração para mesclar, insira o seguinte JSON:

   ```
   {
       "AWS_SITEWISE_EDGE_ACCESS_CONTROL_ALLOW_ORIGIN": "*"
   }
   ```
**nota**  
Usar `*` como valor para `AWS_SITEWISE_EDGE_ACCESS_CONTROL_ALLOW_ORIGIN` permite todas as origens. Para ambientes de produção, é recomendável especificar a origem exata URLs para melhorar a segurança.

1. Escolha **Confirmar**.

1. Escolha **Avançar** para prosseguir com as etapas restantes até chegar à **Etapa 5, Revisão**.

1. Revise suas alterações de configuração e escolha **Implantar** para aplicar as alterações ao seu gateway SiteWise Edge.
**nota**  
Como alternativa, você pode habilitar o CORS definindo globalmente `AWS_SITEWISE_EDGE_ACCESS_CONTROL_ALLOW_ORIGIN` a variável ambiental como `*` em seu AWS IoT SiteWise gateway.

**nota**  
Para proxy autenticado, `userinfo` deve ser incluído no `url` campo na configuração do proxy `username` e não como `password` campos separados.

Depois que a implantação for concluída, o CORS será ativado em sua API do SiteWise Edge, permitindo que origens especificadas façam solicitações de origem cruzada para a API.

# Configurar tempos limite de sessão para AWS IoT SiteWise o Edge
<a name="edge-apis-session-timeout"></a>

SiteWise O Edge permite que você configure o tempo limite de sessão para a API do SiteWise Edge. Esse recurso aumenta a segurança ao encerrar automaticamente as sessões inativas após um período de tempo especificado. Esta seção orienta você pelo processo de configuração do tempo limite da sessão usando o. Console do AWS IoT SiteWise

**nota**  
A configuração do tempo limite da sessão está disponível para a versão 3.4.0 e posterior do `aws.iot.SiteWiseEdgeProcessor` componente. Para obter mais informações, consulte o [AWS IoT SiteWise processador](https://docs.aws.amazon.com/greengrass/v2/developerguide/iotsitewise-processor-component.html) no *Guia do AWS IoT Greengrass Version 2 desenvolvedor*.

**Para configurar um tempo limite de sessão para um gateway SiteWise Edge**

1. Navegue até o [console do AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. No painel de navegação, escolha **Gateways de borda**.

1. Escolha o gateway SiteWise Edge em que você deseja configurar o tempo limite da sessão.
**nota**  
Você pode configurar o tempo limite da sessão no tipo AWS IoT Greengrass V2 de implantação.

1. Na seção **Configuração do gateway**, escolha o dispositivo **principal do Greengrass** associado.

1. Na guia **Implantações**, em Dispositivos **Greengrass**, selecione o link de implantação apropriado.

1. Em **Ações**, escolha **Revisar.** Leia o aviso e escolha **Revisar implantação**.
**Importante**  
A criação de uma configuração de tempo limite de sessão revisada substitui a configuração atual do dispositivo.

1. Na **Etapa 1, Especifique o destino**, forneça um **Nome** opcional para identificar a implantação revisada e escolha **Avançar**.

1. **Na **Etapa 2, Selecionar componentes - opcional**, você pode deixar todas as seleções atuais como estão e escolher Avançar.**

1. Na **Etapa 3, Configurar componentes - opcional**, selecione **aws.iot. SiteWiseEdgeProcessor**e escolha **Configurar componente**.

1. Na seção **Atualização de configuração**, em **Configuração para mesclar**, insira o seguinte JSON:

   ```
   {
       "AWS_SITEWISE_EDGE_SESSION_TIMEOUT_MINUTES": "240"
   }
   ```

1. Defina o valor `AWS_SITEWISE_EDGE_SESSION_TIMEOUT_MINUTES` em minutos. Os valores de tempo limite da sessão podem ser de 1 minuto a 10080 minutos (7 dias). O valor padrão é 240 minutos (4 horas).

1. Escolha **Confirmar**.

1. Escolha **Avançar** para prosseguir com as etapas restantes até chegar à Etapa 5, **Revisão**.

1. Revise suas alterações de configuração e escolha **Implantar** para aplicar as alterações ao seu gateway SiteWise Edge.

**nota**  
Como alternativa, você pode configurar o tempo limite da sessão definindo a variável ambiental global **AWS\$1SITEWISE\$1EDGE\$1SESSION\$1TIMEOUT\$1MINUTES para o valor desejado (em minutos**) no gateway do Edge. SiteWise 

Depois que a implantação for concluída, a nova configuração de tempo limite da sessão será aplicada à sua API do SiteWise Edge.

# Tutorial: Listar modelos de ativos em um gateway AWS IoT SiteWise Edge
<a name="edge-apis-tutorial"></a>

Você pode usar um subconjunto do disponível AWS IoT SiteWise APIs junto com o específico da borda APIs para interagir com os modelos de ativos e seus ativos na borda. Este tutorial orientará você na obtenção de credenciais temporárias em um gateway do AWS IoT SiteWise Edge e na obtenção de uma lista dos modelos de ativos no gateway do SiteWise Edge.

## Pré-requisitos
<a name="edge-apis-tutorial-prerequisites"></a>

Nas etapas deste tutorial, você pode usar uma variedade de ferramentas. Para usar essas ferramentas, certifique-se de que você tem os pré-requisitos correspondentes instalados.

Para concluir este tutorial, você precisará do seguinte:
+ Um [AWS IoT SiteWise Requisitos de gateway auto-hospedado do Edge](configure-gateway-ggv2.md) implantado e em execução 
+ Acesso ao seu gateway SiteWise Edge na mesma rede pela porta 443.
+ [OpenSSL](https://www.openssl.org/) instalado
+ (AWS OpsHub para AWS IoT SiteWise) O [AWS IoT SiteWise aplicativo AWS OpsHub for](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app)
+ (curl) [curl](https://ec.haxx.se/install/) instalado
+ (Python) [urllib3](https://urllib3.readthedocs.io/en/stable/index.html) instalado
+ (Python) [Python3](https://www.python.org/downloads/) instalado
+ (Python) [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) instalado
+ (Python) instalado [BotoCore](https://botocore.amazonaws.com/v1/documentation/api/latest/index.html)

## Etapa 1: Obter um certificado assinado pelo serviço SiteWise Edge Gateway
<a name="edge-apis-tutorial-gateway-cert"></a>

Para estabelecer uma conexão TLS com a APIs disponível no gateway SiteWise Edge, você precisa de um certificado confiável. Você pode gerar esse certificado usando um AWS OpsHub OpenSSL ou for. AWS IoT SiteWise

------
#### [ OpenSSL ]

**nota**  
Você precisa do [OpenSSL](https://www.openssl.org/) instalado para executar esse comando.

Abra um terminal e execute o comando a seguir para obter um certificado assinado do gateway SiteWise Edge. `<sitewise_gateway_ip>`Substitua pelo IP do gateway SiteWise Edge.

```
openssl s_client -connect <sitewise_gateway_ip>:443 </dev/null 2>/dev/null | openssl x509 -outform PEM > GatewayCert.pem
```

------
#### [ AWS OpsHub for AWS IoT SiteWise ]

Você pode usar AWS OpsHub para AWS IoT SiteWise. Para obter mais informações, consulte [Gerencie gateways SiteWise Edge](manage-gateways-ggv2.md).

------

O caminho absoluto para o certificado de gateway SiteWise Edge baixado é usado neste tutorial. Execute o comando a seguir para exportar o caminho completo do seu certificado, substitua `<absolute_path_to_certificate>` pelo caminho para o certificado:

```
export PATH_TO_CERTIFICATE='<absolute_path_to_certificate>'
```

## Etapa 2: Obtenha o nome de host SiteWise do gateway Edge
<a name="edge-apis-tutorial-gateway-hostname"></a>

**nota**  
Você precisa do [OpenSSL](https://www.openssl.org/) instalado para executar esse comando.

Para concluir o tutorial, você precisará do nome do host do seu gateway SiteWise Edge. Para obter o nome do host do seu gateway SiteWise Edge, execute o seguinte, `<sitewise_gateway_ip>` substituindo pelo IP do gateway SiteWise Edge:

```
openssl s_client -connect <sitewise_gateway_ip>:443 </dev/null 2>/dev/null | grep -Po 'CN = \K.*'| head -1
```

Execute o comando a seguir para exportar o nome do host para uso posterior, `<your_edge_gateway_hostname>` substituindo-o pelo nome do host do seu gateway SiteWise Edge:

```
export GATEWAY_HOSTNAME='<your_edge_gateway_hostname>'
```

## Etapa 3: Obtenha credenciais temporárias para seu gateway SiteWise Edge
<a name="edge-apis-tutorial-temporary-credentials"></a>

Agora que você tem o certificado assinado e o nome do host do seu gateway SiteWise Edge, você precisa obter credenciais temporárias para poder executar APIs no gateway. Você pode obter essas credenciais AWS OpsHub por meio de AWS IoT SiteWise ou diretamente do gateway SiteWise Edge usando APIs.

**Importante**  
As credenciais expiram a cada 4 horas, então você deve obtê-las antes de usá-las APIs em seu SiteWise gateway Edge. Não armazene credenciais no cache por mais de 4 horas.

### Obtenha credenciais temporárias usando AWS OpsHub para AWS IoT SiteWise
<a name="edge-apis-tutorial-temp-creds-opshub"></a>

**nota**  
Você precisa do [AWS IoT SiteWise aplicativo AWS OpsHub for](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app) instalado.

Para usar o AWS IoT SiteWise aplicativo AWS OpsHub para obter suas credenciais temporárias, faça o seguinte:

1. Faça login no aplicativo.

1. Escolha **Configurações**.

1. Em **Autenticação**, escolha **Copiar credenciais**.

1. Expanda a opção adequada ao seu ambiente e escolha **Copiar**.

1. Salve as credenciais para usar depois.

### Obtenha credenciais temporárias usando a API do SiteWise Edge Gateway
<a name="edge-apis-tutorial-temp-creds-api"></a>

Para usar a API do gateway do SiteWise Edge para obter as credenciais temporárias, você pode usar um script Python ou curl. Primeiro, você precisará ter um nome de usuário e uma senha para SiteWise o gateway do Edge. Os gateways SiteWise Edge usam autenticação e autorização SigV4. Para obter mais informações sobre como adicionar usuários, consulte [LDAP](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app) ou [grupo de usuários Linux](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app). Essas credenciais serão usadas nas etapas a seguir para obter as credenciais locais em seu gateway SiteWise Edge que são necessárias para usar o. AWS IoT SiteWise APIs

------
#### [ Python ]

**nota**  
Você precisa ter [urllib3](https://urllib3.readthedocs.io/en/stable/index.html) e [Python3](https://www.python.org/downloads/) instalados.

**Para obter as credenciais usando Python**

1. Crie um arquivo chamado **get\$1credentials.py** e copie o código a seguir nele.

   ```
   '''
   The following demonstrates how to get the credentials from the SiteWise Edge gateway. You will need to add local users or connect your system to LDAP/AD
   https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#create-user-pool
   
   Example usage:
       python3 get_credentials.py -e https://<gateway_hostname> -c <path_to_certificate> -u '<gateway_username>' -p '<gateway_password>' -m '<method>'
   '''
   import urllib3
   import json
   import urllib.parse
   import sys
   import os
   import getopt
   
   """
   This function retrieves the AWS IoT SiteWise Edge gateway credentials.
   """
   def get_credentials(endpoint,certificatePath, user, password, method):
       http = urllib3.PoolManager(cert_reqs='CERT_REQUIRED', ca_certs= certificatePath)
       encoded_body = json.dumps({
           "username": user,
           "password": password,
           "authMechanism": method,
       })
   
       url =  urllib.parse.urljoin(endpoint, "/authenticate")
   
       response = http.request('POST', url,
           headers={'Content-Type': 'application/json'}, 
           body=encoded_body)
       
       if response.status != 200:
           raise Exception(f'Failed to authenticate! Response status {response.status}')
   
       auth_data = json.loads(response.data.decode('utf-8'))
   
       accessKeyId = auth_data["accessKeyId"]
       secretAccessKey = auth_data["secretAccessKey"]
       sessionToken = auth_data["sessionToken"]
       region = "edge"
   
       return accessKeyId, secretAccessKey, sessionToken, region
   
   def print_help():
       print('Usage:')
       print(f'{os.path.basename(__file__)} -e <endpoint> -c <path/to/certificate> -u <user> -p <password> -m <method> -a <alias>')
       print('')
       print('-e, --endpoint   edge gateway endpoint. Usually the Edge gateway hostname.')
       print('-c, --cert_path path to downloaded gateway certificate')
       print('-u, --user       Edge user')
       print('-p, --password   Edge password')
       print('-m, --method     (Optional) Authentication method (linux, winnt, ldap), default is linux')
       sys.exit()
   
   
   def parse_args(argv):
       endpoint = ""
       certificatePath = None
       user = None
       password = None
       method = "linux"
       
       try:
           opts, args = getopt.getopt(argv, "he:c:u:p:m:", ["endpoint=","cert_path=", "user=", "password=", "method="])
       except getopt.GetoptError:
           print_help()
   
       for opt, arg in opts:
           if opt == '-h':
               print_help()
           elif opt in ("-e", "--endpoint"):
               endpoint = arg
           elif opt in ("-u", "--user"):
               user = arg
           elif opt in ("-p", "--password"):
               password = arg
           elif opt in ("-m", "--method"):
               method = arg.lower()
           elif opt in ("-c", "--cert_path"):
               certificatePath = arg
   
       if method not in ['ldap', 'linux', 'winnt']:
           print("not valid method parameter, required are ldap, linux, winnt")
           print_help()
   
       if (user == None or password == None):
           print("To authenticate against edge user, password have to be passed together, and the region has to be set to 'edge'")
           print_help()
       
       if(endpoint == ""):
           print("You must provide a valid and reachable gateway hostname")
           print_help()
   
       return endpoint,certificatePath, user, password, method
   
   
   def main(argv):
       # get the command line args
       endpoint, certificatePath, user, password, method = parse_args(argv)
       
       accessKeyId, secretAccessKey, sessionToken, region=get_credentials(endpoint, certificatePath, user, password, method)
   
       print("Copy and paste the following credentials into the shell, they are valid for 4 hours:")
       print(f"export AWS_ACCESS_KEY_ID={accessKeyId}")
       print(f"export AWS_SECRET_ACCESS_KEY={secretAccessKey}")
       print(f"export AWS_SESSION_TOKEN={sessionToken}")
       print(f"export AWS_REGION={region}")
       print()
       
       
       
   
   if __name__ == "__main__":
      main(sys.argv[1:])
   ```

1. Execute o **get\$1credentials.py** a partir do terminal substituindo `<gateway_username>` e `<gateway_password>` pelas credenciais que você criou.

   ```
   python3 get_credentials.py -e https://$GATEWAY_HOSTNAME -c $PATH_TO_CERTIFICATE -u '<gateway_username>' -p '<gateway_password>' -m 'linux'
   ```

------
#### [ curl ]

**nota**  
Você precisa ter o [curl](https://ec.haxx.se/install/) instalado.

**Para obter as credenciais usando curl**

1. Execute o comando a seguir a partir do terminal substituindo <gateway\$1username> e <gateway\$1password> pelas credenciais que você criou.

   ```
   curl --cacert $PATH_TO_CERTIFICATE --location \
   -X POST https://$GATEWAY_HOSTNAME:443/authenticate \
   --header 'Content-Type: application/json' \
   --data-raw '{
       "username": "<gateway_username>",
       "password": "<gateway_password>",
       "authMechanism": "linux"
   }'
   ```

   A resposta deve ser parecida com o seguinte:

   ```
   {
       "username": "sweuser",
       "accessKeyId": "<accessKeyId>",
       "secretAccessKey": "<secretAccessKey>",
       "sessionToken": "<sessionToken>",
       "sessionExpiryTime": "2022-11-17T04:51:40.927095Z",
       "authMechanism": "linux",
       "role": "edge-user"
   }
   ```

1. Execute o seguinte comando no seu terminal.

   ```
   export AWS_ACCESS_KEY_ID=<accessKeyId>
   export AWS_SECRET_ACCESS_KEY=<secretAccessKey>
   export AWS_SESSION_TOKEN=<sessionToken>
   export AWS_REGION=edge
   ```

------

## Etapa 4: Obtenha uma lista dos modelos de ativos no gateway SiteWise Edge
<a name="edge-apis-tutorial-get-asset-models"></a>

Agora que você tem um certificado assinado, o nome de host do gateway SiteWise Edge e credenciais temporárias do gateway SiteWise Edge, você pode usar a `ListAssetModels` API para obter uma lista dos modelos de ativos no gateway SiteWise Edge.

------
#### [ Python ]

**nota**  
Você precisa do [Python3, do Boto3](https://www.python.org/downloads/) [e instalado](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html). [BotoCore](https://botocore.amazonaws.com/v1/documentation/api/latest/index.html)

**Para obter a lista de modelos de ativo usando Python**

1. Crie um arquivo chamado **list\$1asset\$1model.py** e copie o código a seguir nele.

   ```
   import json
   import boto3
   import botocore
   import os
   
   # create the client using the credentials
   client = boto3.client("iotsitewise", 
       endpoint_url= "https://"+ os.getenv("GATEWAY_HOSTNAME"),
       region_name=os.getenv("AWS_REGION"), 
       aws_access_key_id=os.getenv("AWS_ACCESS_KEY_ID"), 
       aws_secret_access_key=os.getenv("AWS_SECRET_ACCESS_KEY"), 
       aws_session_token=os.getenv("AWS_SESSION_TOKEN"),
       verify=os.getenv("PATH_TO_CERTIFICATE"),
       config=botocore.config.Config(inject_host_prefix=False))
   
   # call the api using local credentials
   response = client.list_asset_models()
   print(response)
   ```

1. Execute o **list\$1asset\$1model.py** a partir do terminal.

   ```
   python3 list_asset_model.py
   ```

------
#### [ curl ]

**nota**  
Você precisa ter o [curl](https://ec.haxx.se/install/) instalado.

**Para obter a lista de modelos de ativo usando curl**

Execute o comando a seguir no terminal.

```
curl \
  --request GET https://$GATEWAY_HOSTNAME:443/asset-models \
  --cacert $PATH_TO_CERTIFICATE \
  --aws-sigv4 "aws:amz:edge:iotsitewise" \
  --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \
  -H "x-amz-security-token:$AWS_SESSION_TOKEN"
```

A resposta deve ser parecida com o seguinte:

```
{
    "assetModelSummaries": [
        {
            "arn": "arn:aws:iotsitewise:{region}:{account-id}:asset-model/{asset-model-id}",
            "creationDate": 1.669245291E9,
            "description": "This is a small example asset model",
            "id": "{asset-model-id}",
            "lastUpdateDate": 1.669249038E9,
            "name": "Some Metrics Model",
            "status": {
                "error": null,
                "state": "ACTIVE"
            }
        },
        .
        .
        .
    ],
    "nextToken": null
}
```

------