使用 Tools for PowerShell 的 DynamoDB 範例 - AWS SDK 程式碼範例

文件 AWS SDK AWS 範例 SDK 儲存庫中有更多可用的 GitHub 範例。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Tools for PowerShell 的 DynamoDB 範例

下列程式碼範例示範如何搭配 AWS Tools for PowerShell DynamoDB 使用 來執行動作和實作常見案例。

Actions 是大型程式的程式碼摘錄,必須在內容中執行。雖然動作會示範如何呼叫個別服務函數,但您可以在相關案例中查看內容中的動作。

每個範例都包含完整原始程式碼的連結,您可以在其中找到如何在內容中設定和執行程式碼的指示。

主題

動作

下列程式碼範例示範如何使用 Add-DDBIndexSchema

for PowerShell 工具

範例 1:建立 empty TableSchema 物件,並在將 TableSchema 物件寫入管道之前,為其新增新的本機次要索引定義。

$schema | Add-DDBIndexSchema -IndexName "LastPostIndex" -RangeKeyName "LastPostDateTime" -RangeKeyDataType "S" -ProjectionType "keys_only" $schema = New-DDBTableSchema

輸出:

AttributeSchema KeySchema LocalSecondaryIndexSchema --------------- --------- ------------------------- {LastPostDateTime} {} {LastPostIndex}

範例 2:在將 TableSchema 物件寫回管道之前,將新的本機次要索引定義新增至提供的 TableSchema 物件。也可以使用 -Schema 參數提供 TableSchema 物件。

New-DDBTableSchema | Add-DDBIndexSchema -IndexName "LastPostIndex" -RangeKeyName "LastPostDateTime" -RangeKeyDataType "S" -ProjectionType "keys_only"

輸出:

AttributeSchema KeySchema LocalSecondaryIndexSchema --------------- --------- ------------------------- {LastPostDateTime} {} {LastPostIndex}
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 Add-DDBIndexSchema

下列程式碼範例示範如何使用 Add-DDBKeySchema

for PowerShell 工具

範例 1:建立 empty TableSchema 物件,並使用指定的金鑰資料將金鑰和屬性定義項目新增至該物件,然後再將 TableSchema 物件寫入管道。金鑰類型預設為 'HASH';使用值為 'RANGE' 的 -KeyType paameter 宣告範圍金鑰。

$schema = New-DDBTableSchema $schema | Add-DDBKeySchema -KeyName "ForumName" -KeyDataType "S"

輸出:

AttributeSchema KeySchema LocalSecondaryIndexSchema --------------- --------- ------------------------- {ForumName} {ForumName} {}

範例 2:在將 TableSchema 物件寫入管道之前,將新的金鑰和屬性定義項目新增至提供的 TableSchema 物件。金鑰類型預設為 'HASH';使用值為 'RANGE' 的 -KeyType paameter 宣告範圍金鑰。也可以使用 -Schema 參數提供 TableSchema 物件。

New-DDBTableSchema | Add-DDBKeySchema -KeyName "ForumName" -KeyDataType "S"

輸出:

AttributeSchema KeySchema LocalSecondaryIndexSchema --------------- --------- ------------------------- {ForumName} {ForumName} {}
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 Add-DDBKeySchema

下列程式碼範例示範如何使用 ConvertFrom-DDBItem

for PowerShell 工具

範例 1: ConvertFrom-DDBItem 用於將 Get-DDBItem 的結果從 DynamoDB AttributeValues Word 的雜湊轉換為字串和雙字串等常見類型的雜湊。

@{ SongTitle = 'Somewhere Down The Road' Artist = 'No One You Know' } | ConvertTo-DDBItem Get-DDBItem -TableName 'Music' -Key $key | ConvertFrom-DDBItem

輸出:

Name Value ---- ----- Genre Country Artist No One You Know Price 1.94 CriticRating 9 SongTitle Somewhere Down The Road AlbumTitle Somewhat Famous
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 ConvertFrom-DDBItem

下列程式碼範例示範如何使用 ConvertTo-DDBItem

for PowerShell 工具

範例 1:將雜湊轉換為 DynamoDB 屬性值字典的範例。

@{ SongTitle = 'Somewhere Down The Road' Artist = 'No One You Know' } | ConvertTo-DDBItem Key Value --- ----- SongTitle Amazon.DynamoDBv2.Model.AttributeValue Artist Amazon.DynamoDBv2.Model.AttributeValue

範例 2:將雜湊轉換為 DynamoDB 屬性值字典的範例。

@{ MyMap = @{ MyString = 'my string' } MyStringSet = [System.Collections.Generic.HashSet[String]]@('my', 'string') MyNumericSet = [System.Collections.Generic.HashSet[Int]]@(1, 2, 3) MyBinarySet = [System.Collections.Generic.HashSet[System.IO.MemoryStream]]@( ([IO.MemoryStream]::new([Text.Encoding]::UTF8.GetBytes('my'))), ([IO.MemoryStream]::new([Text.Encoding]::UTF8.GetBytes('string'))) ) MyList1 = @('my', 'string') MyList2 = [System.Collections.Generic.List[Int]]@(1, 2) MyList3 = [System.Collections.ArrayList]@('one', 2, $true) } | ConvertTo-DDBItem

輸出:

Key Value --- ----- MyStringSet Amazon.DynamoDBv2.Model.AttributeValue MyList1 Amazon.DynamoDBv2.Model.AttributeValue MyNumericSet Amazon.DynamoDBv2.Model.AttributeValue MyList2 Amazon.DynamoDBv2.Model.AttributeValue MyBinarySet Amazon.DynamoDBv2.Model.AttributeValue MyMap Amazon.DynamoDBv2.Model.AttributeValue MyList3 Amazon.DynamoDBv2.Model.AttributeValue
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 ConvertTo-DDBItem

下列程式碼範例示範如何使用 Get-DDBBatchItem

for PowerShell 工具

範例 1:從 DynamoDB 資料表「音樂」和「歌曲」中,取得具有「下路」的 SongTitle 的項目。

$key = @{ SongTitle = 'Somewhere Down The Road' Artist = 'No One You Know' } | ConvertTo-DDBItem $keysAndAttributes = New-Object Amazon.DynamoDBv2.Model.KeysAndAttributes $list = New-Object 'System.Collections.Generic.List[System.Collections.Generic.Dictionary[String, Amazon.DynamoDBv2.Model.AttributeValue]]' $list.Add($key) $keysAndAttributes.Keys = $list $requestItem = @{ 'Music' = [Amazon.DynamoDBv2.Model.KeysAndAttributes]$keysAndAttributes 'Songs' = [Amazon.DynamoDBv2.Model.KeysAndAttributes]$keysAndAttributes } $batchItems = Get-DDBBatchItem -RequestItem $requestItem $batchItems.GetEnumerator() | ForEach-Object {$PSItem.Value} | ConvertFrom-DDBItem

輸出:

Name Value ---- ----- Artist No One You Know SongTitle Somewhere Down The Road AlbumTitle Somewhat Famous CriticRating 10 Genre Country Price 1.94 Artist No One You Know SongTitle Somewhere Down The Road AlbumTitle Somewhat Famous CriticRating 10 Genre Country Price 1.94
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 BatchGetItem

下列程式碼範例示範如何使用 Get-DDBItem

for PowerShell 工具

範例 1:使用分割區 key SongTitle 和排序金鑰 Artist 傳回 DynamoDB 項目。

$key = @{ SongTitle = 'Somewhere Down The Road' Artist = 'No One You Know' } | ConvertTo-DDBItem Get-DDBItem -TableName 'Music' -Key $key | ConvertFrom-DDBItem

輸出:

Name Value ---- ----- Genre Country SongTitle Somewhere Down The Road Price 1.94 Artist No One You Know CriticRating 9 AlbumTitle Somewhat Famous
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 GetItem

下列程式碼範例示範如何使用 Get-DDBTable

for PowerShell 工具

範例 1:傳回指定資料表的詳細資訊。

Get-DDBTable -TableName "myTable"
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 DescribeTable

下列程式碼範例示範如何使用 Get-DDBTableList

for PowerShell 工具

範例 1:傳回所有資料表的詳細資訊,自動反覆運算,直到服務指出不存在其他資料表為止。

Get-DDBTableList
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 ListTables

下列程式碼範例示範如何使用 Invoke-DDBQuery

for PowerShell 工具

範例 1:叫用查詢,傳回具有指定 SongTitle 和 Artist 的 DynamoDB 項目。

$invokeDDBQuery = @{ TableName = 'Music' KeyConditionExpression = ' SongTitle = :SongTitle and Artist = :Artist' ExpressionAttributeValues = @{ ':SongTitle' = 'Somewhere Down The Road' ':Artist' = 'No One You Know' } | ConvertTo-DDBItem } Invoke-DDBQuery @invokeDDBQuery | ConvertFrom-DDBItem

輸出:

Name Value ---- ----- Genre Country Artist No One You Know Price 1.94 CriticRating 9 SongTitle Somewhere Down The Road AlbumTitle Somewhat Famous
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的查詢

下列程式碼範例示範如何使用 Invoke-DDBScan

for PowerShell 工具

範例 1:傳回音樂資料表中的所有項目。

Invoke-DDBScan -TableName 'Music' | ConvertFrom-DDBItem

輸出:

Name Value ---- ----- Genre Country Artist No One You Know Price 1.94 CriticRating 9 SongTitle Somewhere Down The Road AlbumTitle Somewhat Famous Genre Country Artist No One You Know Price 1.98 CriticRating 8.4 SongTitle My Dog Spot AlbumTitle Hey Now

範例 2:傳回音樂資料表中 a CriticRating 大於或等於九的項目。

$scanFilter = @{ CriticRating = [Amazon.DynamoDBv2.Model.Condition]@{ AttributeValueList = @(@{N = '9'}) ComparisonOperator = 'GE' } } Invoke-DDBScan -TableName 'Music' -ScanFilter $scanFilter | ConvertFrom-DDBItem

輸出:

Name Value ---- ----- Genre Country Artist No One You Know Price 1.94 CriticRating 9 SongTitle Somewhere Down The Road AlbumTitle Somewhat Famous
  • 如需 API 詳細資訊,請參閱在 AWS Tools for PowerShell Cmdlet 參考掃描

下列程式碼範例示範如何使用 New-DDBTable

for PowerShell 工具

範例 1:此範例會建立名為 Thread 的資料表,其主要金鑰由 'ForumName' (金鑰類型雜湊) 和 'Subject' (金鑰類型範圍) 組成。用於建構資料表的結構描述,可以使用 -Schema 參數,如所示或指定方式匯入每個 cmdlet。

$schema = New-DDBTableSchema $schema | Add-DDBKeySchema -KeyName "ForumName" -KeyDataType "S" $schema | Add-DDBKeySchema -KeyName "Subject" -KeyType RANGE -KeyDataType "S" $schema | New-DDBTable -TableName "Thread" -ReadCapacity 10 -WriteCapacity 5

輸出:

AttributeDefinitions : {ForumName, Subject} TableName : Thread KeySchema : {ForumName, Subject} TableStatus : CREATING CreationDateTime : 10/28/2013 4:39:49 PM ProvisionedThroughput : Amazon.DynamoDBv2.Model.ProvisionedThroughputDescription TableSizeBytes : 0 ItemCount : 0 LocalSecondaryIndexes : {}

範例 2:此範例會建立名為 Thread 的資料表,其主要金鑰由 'ForumName' (金鑰類型雜湊) 和 'Subject' (金鑰類型範圍) 組成。也會定義本機次要索引。本機次要索引的索引鍵會從資料表 (ForumName) 上的主雜湊索引鍵自動設定。用於建構資料表的結構描述,可以使用 -Schema 參數,如所示或指定方式匯入每個 cmdlet。

$schema = New-DDBTableSchema $schema | Add-DDBKeySchema -KeyName "ForumName" -KeyDataType "S" $schema | Add-DDBKeySchema -KeyName "Subject" -KeyDataType "S" $schema | Add-DDBIndexSchema -IndexName "LastPostIndex" -RangeKeyName "LastPostDateTime" -RangeKeyDataType "S" -ProjectionType "keys_only" $schema | New-DDBTable -TableName "Thread" -ReadCapacity 10 -WriteCapacity 5

輸出:

AttributeDefinitions : {ForumName, LastPostDateTime, Subject} TableName : Thread KeySchema : {ForumName, Subject} TableStatus : CREATING CreationDateTime : 10/28/2013 4:39:49 PM ProvisionedThroughput : Amazon.DynamoDBv2.Model.ProvisionedThroughputDescription TableSizeBytes : 0 ItemCount : 0 LocalSecondaryIndexes : {LastPostIndex}

範例 3:此範例示範如何使用單一管道建立名為 Thread 的資料表,該資料表的主要索引鍵包含 'ForumName' (索引鍵類型雜湊) 和 'Subject' (索引鍵類型範圍) 以及本機次要索引。如果管道或 -Schema 參數未提供 Add-DDBKeySchema 和 Add-DDBIndexSchema 物件,則 Add- TableSchema 會為您建立新的Word 物件。

New-DDBTableSchema | Add-DDBKeySchema -KeyName "ForumName" -KeyDataType "S" | Add-DDBKeySchema -KeyName "Subject" -KeyDataType "S" | Add-DDBIndexSchema -IndexName "LastPostIndex" ` -RangeKeyName "LastPostDateTime" ` -RangeKeyDataType "S" ` -ProjectionType "keys_only" | New-DDBTable -TableName "Thread" -ReadCapacity 10 -WriteCapacity 5

輸出:

AttributeDefinitions : {ForumName, LastPostDateTime, Subject} TableName : Thread KeySchema : {ForumName, Subject} TableStatus : CREATING CreationDateTime : 10/28/2013 4:39:49 PM ProvisionedThroughput : Amazon.DynamoDBv2.Model.ProvisionedThroughputDescription TableSizeBytes : 0 ItemCount : 0 LocalSecondaryIndexes : {LastPostIndex}
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 CreateTable

下列程式碼範例示範如何使用 New-DDBTableSchema

for PowerShell 工具

範例 1:建立空的 TableSchema 物件,準備接受金鑰和索引定義,用於建立新的 Amazon DynamoDB 資料表。傳回的物件可以匯入 Add-DDBKeySchema、Add-DDBIndexSchema 和 New-DDBTable cmdlet,或使用每個 cmdlet 上的 -Schema 參數傳遞給它們。

New-DDBTableSchema

輸出:

AttributeSchema KeySchema LocalSecondaryIndexSchema --------------- --------- ------------------------- {} {} {}
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 New-DDBTableSchema

下列程式碼範例示範如何使用 Remove-DDBItem

for PowerShell 工具

範例 1:移除符合所提供金鑰的 DynamoDB 項目。

$key = @{ SongTitle = 'Somewhere Down The Road' Artist = 'No One You Know' } | ConvertTo-DDBItem Remove-DDBItem -TableName 'Music' -Key $key -Confirm:$false
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 DeleteItem

下列程式碼範例示範如何使用 Remove-DDBTable

for PowerShell 工具

範例 1:刪除指定的資料表。在操作進行之前,系統會提示您進行確認。

Remove-DDBTable -TableName "myTable"

範例 2:刪除指定的資料表。在操作進行之前,不會提示您進行確認。

Remove-DDBTable -TableName "myTable" -Force
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 DeleteTable

下列程式碼範例示範如何使用 Set-DDBBatchItem

for PowerShell 工具

範例 1:建立新項目,或將現有項目取代為 DynamoDB 資料表中的新項目 Music and Songs。

$item = @{ SongTitle = 'Somewhere Down The Road' Artist = 'No One You Know' AlbumTitle = 'Somewhat Famous' Price = 1.94 Genre = 'Country' CriticRating = 10.0 } | ConvertTo-DDBItem $writeRequest = New-Object Amazon.DynamoDBv2.Model.WriteRequest $writeRequest.PutRequest = [Amazon.DynamoDBv2.Model.PutRequest]$item

輸出:

$requestItem = @{ 'Music' = [Amazon.DynamoDBv2.Model.WriteRequest]($writeRequest) 'Songs' = [Amazon.DynamoDBv2.Model.WriteRequest]($writeRequest) } Set-DDBBatchItem -RequestItem $requestItem
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 BatchWriteItem

下列程式碼範例示範如何使用 Set-DDBItem

for PowerShell 工具

範例 1:建立新項目,或將現有項目取代為新項目。

$item = @{ SongTitle = 'Somewhere Down The Road' Artist = 'No One You Know' AlbumTitle = 'Somewhat Famous' Price = 1.94 Genre = 'Country' CriticRating = 9.0 } | ConvertTo-DDBItem Set-DDBItem -TableName 'Music' -Item $item
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 PutItem

下列程式碼範例示範如何使用 Update-DDBItem

for PowerShell 工具

範例 1:使用分割區 key SongTitle 和排序索引鍵 Artist,將 DynamoDB 項目上的類型屬性設定為 'Rap'。

$key = @{ SongTitle = 'Somewhere Down The Road' Artist = 'No One You Know' } | ConvertTo-DDBItem $updateDdbItem = @{ TableName = 'Music' Key = $key UpdateExpression = 'set Genre = :val1' ExpressionAttributeValue = (@{ ':val1' = ([Amazon.DynamoDBv2.Model.AttributeValue]'Rap') }) } Update-DDBItem @updateDdbItem

輸出:

Name Value ---- ----- Genre Rap
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 UpdateItem

下列程式碼範例示範如何使用 Update-DDBTable

for PowerShell 工具

範例 1:更新指定資料表的佈建輸送量。

Update-DDBTable -TableName "myTable" -ReadCapacity 10 -WriteCapacity 5
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 UpdateTable