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á.
Gerenciamento do estado da sessão ASP.NET com Amazon DynamoDB
As informações neste tópico são específicas para projetos baseados no .NET Framework e noAWS SDK for .NETVersão 3.3 e anterior.
Este tópico é específico do ASP.NET; as informações neste tópico não são necessariamente aplicáveis ao ASP.NET Core.
Os aplicativos ASP.NET costumam armazenar dados de estado da sessão na memória. Contudo, essa abordagem não oferece uma boa escalabilidade. Após o aplicativo crescer além de um único servidor web, o estado de sessão deverá ser compartilhado entre servidores. Uma solução comum é configurar um servidor de estado de sessão dedicada com o Microsoft SQL Server, mas essa abordagem tem inconvenientes: você precisa administrar outra máquina; o servidor de estado de sessão é um ponto único de falha; e o servidor de estado de sessão pode se tornar um gargalo de desempenho.
DynamoDB
Não importa a solução que você escolher, esteja ciente de que o Amazon DynamoDB impõe limites sobre o tamanho de um item. Nenhum dos registros que você armazena no DynamoDB podem exceder esse limite. Para obter mais informações, consulteLimites no DynamoDBNo Guia do desenvolvedor do Amazon DynamoDB.
O AWS SDK for .NET inclui AWS.SessionProvider.dll
, que contém um provedor de estado de sessão ASP.NET. Também inclui oAmazonDynamoDBSessionProviderSampleExemplo, que demonstra como usar o Amazon DynamoDB como provedor de estado de sessão.
Para obter mais informações sobre como usar o estado de sessão com aplicativos ASP.NET, consulte oDocumentação da Microsoft
Crie uma tabela do ASP.NET_SessionState
Ao iniciar o aplicativo, ele procura pela tabela do Amazon DynamoDB de nome, por padrão,ASP.NET_SessionState
. Recomendamos que você crie essa tabela antes de executar seu aplicativo pela primeira vez.
Para criar a tabela ASP.NET_SessionState
-
Selecione Create Table (Criar tabela). O assistente para Create Table (Criar tabela) é aberto.
-
Na caixa de texto Table name (nome da tabela), digite
ASP.NET_SessionState
. -
No campo Primary key (chave primária), digite
SessionId
e defina o tipo comoString
. -
Quando todas as suas opções forem inseridas como as desejar, selecione Create (Criar).
A tabela ASP.NET_SessionState
estará pronta para uso quando o status mudar de CREATING
para ACTIVE
.
Se você decidir não criar a tabela de antemão, o provedor do estado da sessão criará a tabela durante a inicialização. Consulte as opções de web.config
abaixo para ver uma lista dos atributos que atuam como parâmetros de configuração para a tabela de estado da sessão. Se o provedor criar a tabela, ela usará estes parâmetros.
Configure o provedor de estado da sessão
Para configurar um aplicativo ASP.NET para usar o DynamoDB como servidor de estado da sessão
-
Adicione referências tanto a
AWSSDK.dll
quanto aAWS.SessionProvider.dll
ao seu projeto do Visual Studio ASP.NET. Essas montagens estão disponíveis por meio dePacotes NuGetou porinstalando montagens manualmente.Em versões anteriores do SDK, a funcionalidade do provedor do estado da sessão estava contida em
AWS.Extension.dll
. Para melhorar a usabilidade, a funcionalidade foi movida paraAWS.SessionProvider.dll
. Para obter mais informações, consulte a postagem do blogAWS.Extension
renomeando. -
Edite o arquivo
Web.config
do seu aplicativo. No elementosystem.web
, substitua o elementosessionState
existente pelo seguinte fragmento XML:<sessionState timeout="20" mode="Custom" customProvider="DynamoDBSessionStoreProvider"> <providers> <add name="DynamoDBSessionStoreProvider" type="Amazon.SessionProvider.DynamoDBSessionStateStore" AWSProfileName="{profile_name}" Region="us-west-2" /> </providers> </sessionState>
O perfil representa oAWSCredenciais usadas para se comunicar com o DynamoDB para armazenar e recuperar o estado da sessão. Se você estiver usando oAWS SDK for .NETe estão especificando um perfil na
appSettings
seção de seu aplicativoWeb.config
arquivo, você não precisa especificar um perfil naproviders
seção; oAWSO código do cliente .NET descobrirá no momento da execução. Para obter mais informações, consulteConfigurar oAWS SDK for .NETAplicativo.Se o servidor web estiver sendo executado na instância do Amazon EC2 configurada para usar as funções do IAM com as instâncias do EC2, você não precisará especificar nenhuma credencial na
Web.config
file. Neste caso, oAWSO cliente .NET usará as credenciais da função do IAM. Para obter mais informações, consulte Como conceder acesso usando uma função do IAM e Considerações sobre segurança.
Opções de Web.config
Você pode usar os seguintes atributos de configuração na seção providers
do seu arquivo Web.config
:
- AWSAccessKey
-
ID de chave de acesso a usar. Isso pode ser definido na seção
providers
ouappSettings
. É recomendável não usar esta configuração. Em vez disso, especifique as credenciais usandoAWSProfileName
para especificar um perfil. - AWSSecretKey
-
Chave de secreta a ser usada. Isso pode ser definido na seção
providers
ouappSettings
. É recomendável não usar esta configuração. Em vez disso, especifique as credenciais usandoAWSProfileName
para especificar um perfil. - AWSProfileName
-
O nome de perfil associado com as credenciais que você deseja usar. Para obter mais informações, consulteConfigurar oAWS SDK for .NETAplicativo.
- Região
-
Atributo
string
obrigatório. OAWSNa qual usar o Amazon DynamoDB. Para uma lista deAWSregiões, consulteRegiões e endpoints do DynamoDB. - Aplicativo
-
Atributo
string
opcional. O valor do atributoApplication
é usado para particionar os dados de sessão na tabela, de forma que a tabela possa ser usada para mais de um aplicativo. - Tabela
-
Atributo
string
opcional. O nome da tabela usada para armazenar dados da sessão. O padrão éASP.NET_SessionState
. - ReadCapacityUnits
-
Atributo
int
opcional. As unidades de capacidade de leitura a serem usadas se o provedor criar a tabela. O padrão é 10. - WriteCapacityUnits
-
Atributo
int
opcional. As unidades de capacidade de gravação a serem usadas se o provedor criar a tabela. O padrão é 5. - CreateIfNotExist
-
Atributo
boolean
opcional. O atributoCreateIfNotExist
gerencia se o provedor criará automaticamente a tabela, caso ela ainda não exista. O padrão é verdadeiro. Se esse indicador for definido como falso e a tabela não existir, será emitida uma exceção.
Considerações sobre segurança
Depois que a tabela do DynamoDB for criada e o aplicativo ser configurado, as sessões poderão ser usadas como com qualquer outro provedor de sessão.
Como uma melhor prática de segurança, recomendamos a execução de seus aplicativos com as credenciais de um usuário do Guia do usuário do IAM. Você pode usar oConsole de gerenciamento do IAM
O provedor de estado da sessão precisa poder chamar as operações DeleteItem, DescribeTable, GetItem, PutItem e UpdateItem para a tabela que armazena os dados da sessão. As políticas de exemplo a seguir podem ser usadas para restringir o usuário do IAM somente às operações necessárias pelo provedor para uma instância do DynamoDB executada em us-west-2:
{ "Version" : "2012-10-17", "Statement" : [ { "Sid" : "1", "Effect" : "Allow", "Action" : [ "dynamodb:DeleteItem", "dynamodb:DescribeTable", "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:UpdateItem" ], "Resource" : "arn:aws:dynamodb:us-west-2:{<YOUR-AWS-ACCOUNT-ID>}:table/ASP.NET_SessionState" } ] }