

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

# Introdução ao uso sam sync para sincronizar com Nuvem AWS
<a name="using-sam-cli-sync"></a>

O AWS Serverless Application Model comando Command Line Interface (AWS SAMCLI) `sam sync` fornece opções para sincronizar rapidamente as alterações do aplicativo local com Nuvem AWS o. Use `sam sync` ao desenvolver seus aplicativos para:

1. Detecte e sincronize automaticamente as alterações locais com Nuvem AWS o.

1. Personalize quais alterações locais são sincronizadas com o Nuvem AWS.

1. Prepare seu aplicativo na nuvem para testes e validação.

Com `sam sync`, você pode criar um fluxo de trabalho de desenvolvimento rápido que reduz o tempo necessário para sincronizar suas alterações locais com a nuvem para testes e validação.

**nota**  
O comando `sam sync` é recomendado para ambientes de desenvolvimento. Para ambientes de produção, recomendamos usar `sam deploy` ou configurar um *pipeline de integração e entrega contínuas (CI/CD)*. Para saber mais, consulte [Implante seu aplicativo e seus recursos com AWS SAM](serverless-deploying.md).

O `sam sync` comando faz parte do AWS SAM Accelerate. *AWS SAM Accelerate*fornece ferramentas que você pode usar para acelerar a experiência de desenvolvimento e teste de aplicativos sem servidor no. Nuvem AWS

**Topics**
+ [

## Detecte e sincronize automaticamente as alterações locais no Nuvem AWS
](#using-sam-cli-sync-auto)
+ [

## Personalize quais alterações locais são sincronizadas com o Nuvem AWS
](#using-sam-cli-sync-customize)
+ [

## Prepare seu aplicativo na nuvem para testes e validação
](#using-sam-cli-sync-test)
+ [

## Opções para o comando sam sync
](#using-sam-cli-sync-options)
+ [

## Solução de problemas
](#using-sam-cli-sync-troubleshooting)
+ [

## Exemplos
](#using-sam-cli-sync-examples)
+ [

## Saiba mais
](#using-sam-cli-sync-learn)

## Detecte e sincronize automaticamente as alterações locais no Nuvem AWS
<a name="using-sam-cli-sync-auto"></a>

Execute `sam sync` com a opção `--watch` de começar a sincronizar seu aplicativo com Nuvem AWS. Isso faz o seguinte:

1. **Crie seu aplicativo** — Esse processo é semelhante ao uso do comando `sam build`.

1. **Implante seu aplicativo** — O AWS SAMCLI implanta seu aplicativo AWS CloudFormation usando suas configurações padrão. Os seguintes valores padrão são usados:

   1. AWS credenciais e configurações gerais encontradas na sua pasta de `.aws` usuário.

   1. Configurações de implantação do aplicativo encontradas no arquivo do seu aplicativo `samconfig.toml`.

   Se os valores padrão não puderem ser encontrados, AWS SAMCLI informará você e sairão do processo de sincronização.

1. **Observe as alterações locais** — O AWS SAM CLI permanece em execução e observa as alterações locais em seu aplicativo. Isso é o que a opção `--watch` oferece.

   Esta opção pode ser ativada por padrão. Para valores padrão, consulte o arquivo `samconfig.toml` do seu aplicativo. O seguinte é um arquivo de exemplo:

   ```
   ...
   [default.sync]
   [default.sync.parameters]
   watch = true
   ...
   ```

1. **Sincronize alterações locais com o Nuvem AWS** — Quando você faz alterações locais, AWS SAMCLI ele detecta e sincroniza essas alterações com o Nuvem AWS método mais rápido disponível. Dependendo do tipo de alteração, o seguinte pode ocorrer:

   1. Se seu recurso atualizado oferecer suporte AWS ao serviço APIs, eles o AWS SAMCLI usarão para implantar suas alterações. Isso resulta em uma sincronização rápida para atualizar seu recurso no Nuvem AWS.

   1. Se seu recurso atualizado não oferecer suporte ao AWS serviço APIs, AWS SAMCLI ele executará uma CloudFormation implantação. Isso atualiza todo o seu aplicativo no Nuvem AWS. Embora não seja tão rápido, ele evita que você precise iniciar manualmente uma implantação.

Como o `sam sync` comando atualiza automaticamente seu aplicativo no Nuvem AWS, ele é recomendado somente para ambientes de desenvolvimento. Ao executar `sam sync`, você deverá confirmar:

```
**The sync command should only be used against a development stack**.

Confirm that you are synchronizing a development stack.

Enter Y to proceed with the command, or enter N to cancel:
 [Y/n]: ENTER
```

## Personalize quais alterações locais são sincronizadas com o Nuvem AWS
<a name="using-sam-cli-sync-customize"></a>

Forneça opções para personalizar quais alterações locais são sincronizadas com o Nuvem AWS. Isso pode acelerar o tempo necessário para ver suas alterações locais na nuvem para testes e validação.

Por exemplo, forneça a `--code` opção de sincronizar somente alterações de código, como código de AWS Lambda função. Durante o desenvolvimento, se você se concentrar especificamente no código Lambda, isso colocará suas alterações na nuvem rapidamente para teste e validação. Este é um exemplo:

```
$ sam sync --code --watch
```

Para sincronizar somente alterações de código para uma função ou camada específica do Lambda, use a opção `--resource-id`. Este é um exemplo:

```
$ sam sync --code --resource-id HelloWorldFunction --resource-id HelloWorldLayer
```

## Prepare seu aplicativo na nuvem para testes e validação
<a name="using-sam-cli-sync-test"></a>

O comando `sam sync` encontra automaticamente o método mais rápido disponível para atualizar seu aplicativo no Nuvem AWS. Isso pode acelerar seus fluxos de trabalho de desenvolvimento e testes na nuvem. Ao utilizar o AWS serviço APIs, você pode desenvolver, sincronizar e testar rapidamente os recursos suportados. Para ver um exemplo prático, consulte o [Módulo 6 - AWS SAM Acelere](https://s12d.com/sam-ws-en-accelerate) *no workshop completo AWS SAM *.

## Opções para o comando sam sync
<a name="using-sam-cli-sync-options"></a>

A seguir estão algumas das principais opções que você pode usar para modificar o comando `sam sync`. Para obter uma lista de todas as opções, consulte [sam sync](sam-cli-command-reference-sam-sync.md).

### Execute uma implantação única CloudFormation
<a name="using-sam-cli-sync-options-single-deploy"></a>

Use a opção `--no-watch` para desativar a sincronização automática. Este é um exemplo:

```
$ sam sync --no-watch
```

Eles AWS SAMCLI realizarão uma CloudFormation implantação única. Esse comando agrupa as ações executadas pelos comandos `sam build` e `sam deploy`.

### Ignore a implantação inicial CloudFormation
<a name="using-sam-cli-sync-options-skip-deploy-sync"></a>

Você pode personalizar se uma CloudFormation implantação é necessária sempre que `sam sync` for executada.
+ `--no-skip-deploy-sync`Forneça a exigência de uma CloudFormation implantação sempre que `sam sync` for executada. Isso garante que sua infraestrutura local seja sincronizada CloudFormation, evitando desvios. Usar essa opção adiciona mais tempo ao seu fluxo de trabalho de desenvolvimento e teste.
+ Forneça `--skip-deploy-sync` para tornar CloudFormation a implantação opcional. Ele AWS SAMCLI comparará seu AWS SAM modelo local com o CloudFormation modelo implantado e ignorará a CloudFormation implantação inicial se uma alteração não for detectada. Ignorar a CloudFormation implantação pode economizar seu tempo ao sincronizar alterações locais com o. Nuvem AWS

  Se nenhuma alteração for detectada, o ainda AWS SAMCLI realizará uma CloudFormation implantação nos seguintes cenários:
  + Se já passaram 7 dias ou mais desde sua última CloudFormation implantação.
  + Se um grande número de alterações no código da função Lambda for detectado, a CloudFormation implantação será o método mais rápido para atualizar seu aplicativo.

Este é um exemplo:

```
$ sam sync --skip-deploy-sync
```

### Sincronizar um recurso a partir de uma pilha aninhada
<a name="using-sam-cli-sync-options-nested-stack"></a>

**Para sincronizar um recurso a partir de uma pilha aninhada**

1. Forneça a pilha raiz usando `--stack-name`.

1. Identifique o recurso na pilha aninhada usando o seguinte formato: `nestedStackId/resourceId`.

1. Forneça o recurso na pilha aninhada usando `--resource-id`.

   Este é um exemplo:

   ```
   $ sam sync --code --stack-name sam-app --resource-id myNestedStack/HelloWorldFunction
   ```

Para mais informações sobre a criação de aplicativos aninhados, consulte [Reutilize código e recursos usando aplicativos aninhados no AWS SAM](serverless-sam-template-nested-applications.md).

### Especifique uma CloudFormation pilha específica para atualizar
<a name="using-sam-cli-sync-options-stack-name"></a>

Para especificar uma CloudFormation pilha específica a ser atualizada, forneça a `--stack-name` opção. Este é um exemplo:

```
$ sam sync --stack-name dev-sam-app
```

### Acelere os tempos de compilação criando seu projeto na pasta de origem
<a name="using-sam-cli-sync-options-source"></a>

Para runtimes e métodos de compilação compatíveis, você pode usar a opção `--build-in-source` de criar seu projeto diretamente na pasta de origem. Por padrão, eles AWS SAM CLI são compilados em um diretório temporário, o que envolve a cópia do código-fonte e dos arquivos do projeto. Com`--build-in-source`, AWS SAM CLI as compilações diretamente na sua pasta de origem, o que acelera o processo de compilação ao eliminar a necessidade de copiar arquivos para um diretório temporário.

Para ver uma lista de runtimes compatíveis, consulte` --build-in-source`.

### Especifique arquivos e pastas que não iniciarão uma sincronização
<a name="using-sam-cli-sync-options-exclude"></a>

Use a opção `--watch-exclude` para especificar qualquer arquivo ou pasta que não iniciará uma sincronização quando atualizado. Para obter mais informações sobre essa opção, consulte `--watch-exclude`.

Veja a seguir um exemplo que exclui o arquivo associado `package-lock.json` à nossa função `HelloWorldFunction`:

```
$ sam sync --watch --watch-exclude HelloWorldFunction=package-lock.json
```

Quando esse comando for executado, o AWS SAM CLI iniciará o processo de sincronização. Essa transmissão inclui o seguinte:
+ Execute `sam build` para criar suas funções e preparar seu aplicativo para a implantação.
+ Execute `sam deploy` para implantar seu aplicativo.
+ Fique atento às alterações em seu aplicativo.

Quando modificamos o `package-lock.json` arquivo, eles AWS SAM CLI não iniciam uma sincronização. Quando outro arquivo for atualizado, o AWS SAM CLI iniciará uma sincronização, que incluirá o `package-lock.json` arquivo.

Veja a seguir um exemplo de especificação de uma função do Lambda de uma pilha filho:

```
$ sam sync --watch --watch-exclude ChildStackA/MyFunction=database.sqlite3
```

## Solução de problemas
<a name="using-sam-cli-sync-troubleshooting"></a>

Para solucionar o problema do AWS SAMCLI, consulte[AWS SAM CLI solução de problemas](sam-cli-troubleshooting.md).

## Exemplos
<a name="using-sam-cli-sync-examples"></a>

### Usando o sam sync para atualizar o aplicativo Hello World
<a name="using-sam-cli-sync-examples-example1"></a>

Neste exemplo, começamos inicializando a amostra do aplicativo Hello World. Para saber mais sobre este aplicativo, consulte [Tutorial: implante um aplicativo Hello World com AWS SAM](serverless-getting-started-hello-world.md).

Executar `sam sync` inicia o processo de criação e implantação.

```
$ sam sync
				
The SAM CLI will use the AWS Lambda, Amazon API Gateway, and AWS StepFunctions APIs to upload your code without
performing a CloudFormation deployment. This will cause drift in your CloudFormation stack.
**The sync command should only be used against a development stack**.

Confirm that you are synchronizing a development stack.

Enter Y to proceed with the command, or enter N to cancel:
 [Y/n]:
Queued infra sync. Waiting for in progress code syncs to complete...
Starting infra sync.
Manifest file is changed (new hash: 3298f13049d19cffaa37ca931dd4d421) or dependency folder (.aws-sam/deps/0663e6fe-a888-4efb-b908-e2344261e9c7) is missing for (HelloWorldFunction), downloading dependencies and copying/building source
Building codeuri: /Users/.../Demo/sync/sam-app/hello_world runtime: python3.9 metadata: {} architecture: x86_64 functions: HelloWorldFunction
Running PythonPipBuilder:CleanUp
Running PythonPipBuilder:ResolveDependencies
Running PythonPipBuilder:CopySource

Build Succeeded

Successfully packaged artifacts and wrote output template to file /var/folders/45/5ct135bx3fn2551_ptl5g6_80000gr/T/tmpx_5t4u3f.
Execute the following command to deploy the packaged template
sam deploy --template-file /var/folders/45/5ct135bx3fn2551_ptl5g6_80000gr/T/tmpx_5t4u3f --stack-name <YOUR STACK NAME>


    Deploying with following values
    ===============================
    Stack name                   : sam-app
    Region                       : us-west-2
    Disable rollback             : False
    Deployment s3 bucket         : aws-sam-cli-managed-default-samclisam-s3-demo-bucket-1a4x26zbcdkqr
    Capabilities                 : ["CAPABILITY_NAMED_IAM", "CAPABILITY_AUTO_EXPAND"]
    Parameter overrides          : {}
    Signing Profiles             : null

Initiating deployment
=====================


2023-03-17 11:17:19 - Waiting for stack create/update to complete

CloudFormation events from stack operations (refresh every 0.5 seconds)
---------------------------------------------------------------------------------------------------------------------------------------------
ResourceStatus                      ResourceType                        LogicalResourceId                   ResourceStatusReason
---------------------------------------------------------------------------------------------------------------------------------------------
CREATE_IN_PROGRESS                  AWS::CloudFormation::Stack          sam-app                             Transformation succeeded
CREATE_IN_PROGRESS                  AWS::CloudFormation::Stack          AwsSamAutoDependencyLayerNestedSt   -
                                                                        ack
CREATE_IN_PROGRESS                  AWS::IAM::Role                      HelloWorldFunctionRole              -
CREATE_IN_PROGRESS                  AWS::IAM::Role                      HelloWorldFunctionRole              Resource creation Initiated
CREATE_IN_PROGRESS                  AWS::CloudFormation::Stack          AwsSamAutoDependencyLayerNestedSt   Resource creation Initiated
                                                                        ack
CREATE_COMPLETE                     AWS::IAM::Role                      HelloWorldFunctionRole              -
CREATE_COMPLETE                     AWS::CloudFormation::Stack          AwsSamAutoDependencyLayerNestedSt   -
                                                                        ack
CREATE_IN_PROGRESS                  AWS::Lambda::Function               HelloWorldFunction                  -
CREATE_IN_PROGRESS                  AWS::Lambda::Function               HelloWorldFunction                  Resource creation Initiated
CREATE_COMPLETE                     AWS::Lambda::Function               HelloWorldFunction                  -
CREATE_IN_PROGRESS                  AWS::ApiGateway::RestApi            ServerlessRestApi                   -
CREATE_IN_PROGRESS                  AWS::ApiGateway::RestApi            ServerlessRestApi                   Resource creation Initiated
CREATE_COMPLETE                     AWS::ApiGateway::RestApi            ServerlessRestApi                   -
CREATE_IN_PROGRESS                  AWS::ApiGateway::Deployment         ServerlessRestApiDeployment47fc2d   -
                                                                        5f9d
CREATE_IN_PROGRESS                  AWS::Lambda::Permission             HelloWorldFunctionHelloWorldPermi   -
                                                                        ssionProd
CREATE_IN_PROGRESS                  AWS::Lambda::Permission             HelloWorldFunctionHelloWorldPermi   Resource creation Initiated
                                                                        ssionProd
CREATE_IN_PROGRESS                  AWS::ApiGateway::Deployment         ServerlessRestApiDeployment47fc2d   Resource creation Initiated
                                                                        5f9d
CREATE_COMPLETE                     AWS::ApiGateway::Deployment         ServerlessRestApiDeployment47fc2d   -
                                                                        5f9d
CREATE_IN_PROGRESS                  AWS::ApiGateway::Stage              ServerlessRestApiProdStage          -
CREATE_IN_PROGRESS                  AWS::ApiGateway::Stage              ServerlessRestApiProdStage          Resource creation Initiated
CREATE_COMPLETE                     AWS::ApiGateway::Stage              ServerlessRestApiProdStage          -
CREATE_COMPLETE                     AWS::Lambda::Permission             HelloWorldFunctionHelloWorldPermi   -
                                                                        ssionProd
CREATE_COMPLETE                     AWS::CloudFormation::Stack          sam-app                             -
---------------------------------------------------------------------------------------------------------------------------------------------

CloudFormation outputs from deployed stack
----------------------------------------------------------------------------------------------------------------------------------------------
Outputs
----------------------------------------------------------------------------------------------------------------------------------------------
Key                 HelloWorldFunctionIamRole
Description         Implicit IAM Role created for Hello World function
Value               arn:aws:iam::012345678910:role/sam-app-HelloWorldFunctionRole-BUFVMO2PJIYF

Key                 HelloWorldApi
Description         API Gateway endpoint URL for Prod stage for Hello World function
Value               https://pcrx5gdaof.execute-api.us-west-2.amazonaws.com/Prod/hello/

Key                 HelloWorldFunction
Description         Hello World Lambda Function ARN
Value               arn:aws:lambda:us-west-2:012345678910:function:sam-app-HelloWorldFunction-2PlN6TPTQoco
----------------------------------------------------------------------------------------------------------------------------------------------
Stack creation succeeded. Sync infra completed.

Infra sync completed.
CodeTrigger not created as CodeUri or DefinitionUri is missing for ServerlessRestApi.
```

Quando a implantação estiver concluída, modificamos o código `HelloWorldFunction`. O AWS SAMCLI detecta essa alteração e sincroniza nosso aplicativo com o. Nuvem AWS Como o AWS serviço de AWS Lambda suporte APIs, uma sincronização rápida é executada.

```
Syncing Lambda Function HelloWorldFunction...
Manifest is not changed for (HelloWorldFunction), running incremental build
Building codeuri: /Users/.../Demo/sync/sam-app/hello_world runtime: python3.9 metadata: {} architecture: x86_64 functions: HelloWorldFunction
Running PythonPipBuilder:CopySource
Finished syncing Lambda Function HelloWorldFunction.
```

Em seguida, modificamos nosso endpoint de API no AWS SAM modelo do aplicativo. Nós mudamos `/hello` para `/helloworld`.

```
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
...
Resources:
  HelloWorldFunction:
    ...
    Properties:
      ...
      Events:
        HelloWorld:
          Type: Api
          Properties:
            Path: /helloworld
            Method: get
```

Como o recurso Amazon API Gateway não é compatível com a API do AWS serviço, ele executa AWS SAMCLI automaticamente uma CloudFormation implantação. Veja a seguir um exemplo de saída:

```
Queued infra sync. Waiting for in progress code syncs to complete...
Starting infra sync.
Manifest is not changed for (HelloWorldFunction), running incremental build
Building codeuri: /Users/.../Demo/sync/sam-app/hello_world runtime: python3.9 metadata: {} architecture: x86_64 functions: HelloWorldFunction
Running PythonPipBuilder:CopySource

Build Succeeded

Successfully packaged artifacts and wrote output template to file /var/folders/45/5ct135bx3fn2551_ptl5g6_80000gr/T/tmpuabo0jb9.
Execute the following command to deploy the packaged template
sam deploy --template-file /var/folders/45/5ct135bx3fn2551_ptl5g6_80000gr/T/tmpuabo0jb9 --stack-name <YOUR STACK NAME>


    Deploying with following values
    ===============================
    Stack name                   : sam-app
    Region                       : us-west-2
    Disable rollback             : False
    Deployment s3 bucket         : aws-sam-cli-managed-default-samclisam-s3-demo-bucket-1a4x26zbcdkqr
    Capabilities                 : ["CAPABILITY_NAMED_IAM", "CAPABILITY_AUTO_EXPAND"]
    Parameter overrides          : {}
    Signing Profiles             : null

Initiating deployment
=====================


2023-03-17 14:41:18 - Waiting for stack create/update to complete

CloudFormation events from stack operations (refresh every 0.5 seconds)
---------------------------------------------------------------------------------------------------------------------------------------------
ResourceStatus                      ResourceType                        LogicalResourceId                   ResourceStatusReason
---------------------------------------------------------------------------------------------------------------------------------------------
UPDATE_IN_PROGRESS                  AWS::CloudFormation::Stack          sam-app                             Transformation succeeded
UPDATE_IN_PROGRESS                  AWS::CloudFormation::Stack          AwsSamAutoDependencyLayerNestedSt   -
                                                                        ack
UPDATE_COMPLETE                     AWS::CloudFormation::Stack          AwsSamAutoDependencyLayerNestedSt   -
                                                                        ack
UPDATE_IN_PROGRESS                  AWS::ApiGateway::RestApi            ServerlessRestApi                   -
UPDATE_COMPLETE                     AWS::ApiGateway::RestApi            ServerlessRestApi                   -
CREATE_IN_PROGRESS                  AWS::ApiGateway::Deployment         ServerlessRestApiDeployment8cf30e   -
                                                                        d3cd
UPDATE_IN_PROGRESS                  AWS::Lambda::Permission             HelloWorldFunctionHelloWorldPermi   Requested update requires the
                                                                        ssionProd                           creation of a new physical
                                                                                                            resource; hence creating one.
UPDATE_IN_PROGRESS                  AWS::Lambda::Permission             HelloWorldFunctionHelloWorldPermi   Resource creation Initiated
                                                                        ssionProd
CREATE_IN_PROGRESS                  AWS::ApiGateway::Deployment         ServerlessRestApiDeployment8cf30e   Resource creation Initiated
                                                                        d3cd
CREATE_COMPLETE                     AWS::ApiGateway::Deployment         ServerlessRestApiDeployment8cf30e   -
                                                                        d3cd
UPDATE_IN_PROGRESS                  AWS::ApiGateway::Stage              ServerlessRestApiProdStage          -
UPDATE_COMPLETE                     AWS::ApiGateway::Stage              ServerlessRestApiProdStage          -
UPDATE_COMPLETE                     AWS::Lambda::Permission             HelloWorldFunctionHelloWorldPermi   -
                                                                        ssionProd
UPDATE_COMPLETE_CLEANUP_IN_PROGRE   AWS::CloudFormation::Stack          sam-app                             -
SS
DELETE_IN_PROGRESS                  AWS::Lambda::Permission             HelloWorldFunctionHelloWorldPermi   -
                                                                        ssionProd
DELETE_IN_PROGRESS                  AWS::ApiGateway::Deployment         ServerlessRestApiDeployment47fc2d   -
                                                                        5f9d
DELETE_COMPLETE                     AWS::ApiGateway::Deployment         ServerlessRestApiDeployment47fc2d   -
                                                                        5f9d
UPDATE_COMPLETE                     AWS::CloudFormation::Stack          AwsSamAutoDependencyLayerNestedSt   -
                                                                        ack
DELETE_COMPLETE                     AWS::Lambda::Permission             HelloWorldFunctionHelloWorldPermi   -
                                                                        ssionProd
UPDATE_COMPLETE                     AWS::CloudFormation::Stack          sam-app                             -
---------------------------------------------------------------------------------------------------------------------------------------------

CloudFormation outputs from deployed stack
----------------------------------------------------------------------------------------------------------------------------------------------
Outputs
----------------------------------------------------------------------------------------------------------------------------------------------
Key                 HelloWorldFunctionIamRole
Description         Implicit IAM Role created for Hello World function
Value               arn:aws:iam::012345678910:role/sam-app-HelloWorldFunctionRole-BUFVMO2PJIYF

Key                 HelloWorldApi
Description         API Gateway endpoint URL for Prod stage for Hello World function
Value               https://pcrx5gdaof.execute-api.us-west-2.amazonaws.com/Prod/hello/

Key                 HelloWorldFunction
Description         Hello World Lambda Function ARN
Value               arn:aws:lambda:us-west-2:012345678910:function:sam-app-HelloWorldFunction-2PlN6TPTQoco
----------------------------------------------------------------------------------------------------------------------------------------------


Stack update succeeded. Sync infra completed.

Infra sync completed.
```

## Saiba mais
<a name="using-sam-cli-sync-learn"></a>

Para obter uma descrição de todas as opções `sam sync`, consulte [sam sync](sam-cli-command-reference-sam-sync.md).