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

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

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

AWS Config 使用 Tools for PowerShell 的範例

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

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

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

主題

動作

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

for PowerShell 工具

範例 1:此範例會將指定的標籤與資源 ARN 建立關聯,也就是 config-rule/config-rule-16iyn0。

Add-CFGResourceTag -ResourceArn arn:aws:config:eu-west-1:123456789012:config-rule/config-rule-16iyn0 -Tag @{Key="Release";Value="Beta"}
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 TagResource

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

for PowerShell 工具

範例 1:此範例會從指定組態規則的 ConfigurationAggregator 'kaju' 篩選中擷取詳細資訊,並展開/傳回規則的「合規」。

Get-CFGAggregateComplianceByConfigRuleList -ConfigurationAggregatorName kaju -Filters_ConfigRuleName ALB_HTTP_TO_HTTPS_REDIRECTION_CHECK | Select-Object -ExpandProperty Compliance

輸出:

ComplianceContributorCount ComplianceType -------------------------- -------------- Amazon.ConfigService.Model.ComplianceContributorCount NON_COMPLIANT

範例 2:此範例會從指定的 ConfigurationAggregator 擷取詳細資訊,針對彙總器中涵蓋的所有區域篩選指定帳戶的詳細資訊,並進一步撤銷所有規則的合規。

Get-CFGAggregateComplianceByConfigRuleList -ConfigurationAggregatorName kaju -Filters_AccountId 123456789012 | Select-Object ConfigRuleName, @{N="Compliance";E={$_.Compliance.ComplianceType}}

輸出:

ConfigRuleName Compliance -------------- ---------- ALB_HTTP_TO_HTTPS_REDIRECTION_CHECK NON_COMPLIANT ec2-instance-no-public-ip NON_COMPLIANT desired-instance-type NON_COMPLIANT

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

for PowerShell 工具

範例 1:此範例會傳回評估結果,針對指定帳戶、彙總器、區域和組態規則處於「COMPLIANT」狀態的 AWS Config 規則「desired-instance-type」,選取具有資源 ID 和資源類型的輸出

Get-CFGAggregateComplianceDetailsByConfigRule -AccountId 123456789012 -AwsRegion eu-west-1 -ComplianceType COMPLIANT -ConfigRuleName desired-instance-type -ConfigurationAggregatorName raju | Select-Object -ExpandProperty EvaluationResultIdentifier | Select-Object -ExpandProperty EvaluationResultQualifier

輸出:

ConfigRuleName ResourceId ResourceType -------------- ---------- ------------ desired-instance-type i-0f1bf2f34c5678d12 AWS::EC2::Instance desired-instance-type i-0fd12dd3456789123 AWS::EC2::Instance

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

for PowerShell 工具

範例 1:此範例會傳回指定彙總器的不合規規則數目。

(Get-CFGAggregateConfigRuleComplianceSummary -ConfigurationAggregatorName raju).AggregateComplianceCounts.ComplianceSummary.NonCompliantResourceCount

輸出:

CapExceeded CappedCount ----------- ----------- False 5

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

for PowerShell 工具

範例 1:此範例會傳回針對 us-east-1 區域篩選的指定彙總器的資源計數。

Get-CFGAggregateDiscoveredResourceCount -ConfigurationAggregatorName Master -Filters_Region us-east-1

輸出:

GroupByKey GroupedResourceCounts NextToken TotalDiscoveredResources ---------- --------------------- --------- ------------------------ {} 455

範例 2:此範例會傳回指定彙總器篩選區域 RESOURCE_TYPE 分組的資源計數。

Get-CFGAggregateDiscoveredResourceCount -ConfigurationAggregatorName Master -Filters_Region us-east-1 -GroupByKey RESOURCE_TYPE | Select-Object -ExpandProperty GroupedResourceCounts

輸出:

GroupName ResourceCount --------- ------------- AWS::CloudFormation::Stack 12 AWS::CloudFront::Distribution 1 AWS::CloudTrail::Trail 1 AWS::DynamoDB::Table 1 AWS::EC2::EIP 2 AWS::EC2::FlowLog 2 AWS::EC2::InternetGateway 4 AWS::EC2::NatGateway 2 AWS::EC2::NetworkAcl 4 AWS::EC2::NetworkInterface 12 AWS::EC2::RouteTable 13 AWS::EC2::SecurityGroup 18 AWS::EC2::Subnet 16 AWS::EC2::VPC 4 AWS::EC2::VPCEndpoint 2 AWS::EC2::VPCPeeringConnection 1 AWS::IAM::Group 2 AWS::IAM::Policy 51 AWS::IAM::Role 78 AWS::IAM::User 7 AWS::Lambda::Function 3 AWS::RDS::DBSecurityGroup 1 AWS::S3::Bucket 3 AWS::SSM::AssociationCompliance 107 AWS::SSM::ManagedInstanceInventory 108

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

for PowerShell 工具

範例 1:此範例會傳回 'Ireland' 彙總器中彙總之指定資源類型的資源識別碼。如需資源類型的清單,請檢查 https://docs.aws.amazon.com/sdkfornet/v3/apidocs/index.html?page=ConfigService/TConfigServiceResourceTypeWord.html&tocid=Amazon_ConfigService_ResourceType。

Get-CFGAggregateDiscoveredResourceList -ConfigurationAggregatorName Ireland -ResourceType ([Amazon.ConfigService.ResourceType]::AWSAutoScalingAutoScalingGroup)

輸出:

ResourceId : arn:aws:autoscaling:eu-west-1:123456789012:autoScalingGroup:12e3b4fc-1234-1234-a123-1d2ba3c45678:autoScalingGroupName/asg-1 ResourceName : asg-1 ResourceType : AWS::AutoScaling::AutoScalingGroup SourceAccountId : 123456789012 SourceRegion : eu-west-1

範例 2:此範例會傳回以 us-east-1 區域篩選之指定彙總器AwsEC2SecurityGroup名為 'default' 的資源類型。

Get-CFGAggregateDiscoveredResourceList -ConfigurationAggregatorName raju -ResourceType ([Amazon.ConfigService.ResourceType]::AWSEC2SecurityGroup) -Filters_Region us-east-1 -Filters_ResourceName default

輸出:

ResourceId : sg-01234bd5dbfa67c89 ResourceName : default ResourceType : AWS::EC2::SecurityGroup SourceAccountId : 123456789102 SourceRegion : us-east-1 ResourceId : sg-0123a4ebbf56789be ResourceName : default ResourceType : AWS::EC2::SecurityGroup SourceAccountId : 123456789102 SourceRegion : us-east-1 ResourceId : sg-4fc1d234 ResourceName : default ResourceType : AWS::EC2::SecurityGroup SourceAccountId : 123456789102 SourceRegion : us-east-1

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

for PowerShell 工具

範例 1:此範例會傳回指定資源的組態項目,並展開組態。

(Get-CFGAggregateResourceConfig -ResourceIdentifier_SourceRegion us-east-1 -ResourceIdentifier_SourceAccountId 123456789012 -ResourceIdentifier_ResourceId sg-4fc1d234 -ResourceIdentifier_ResourceType ([Amazon.ConfigService.ResourceType]::AWSEC2SecurityGroup) -ConfigurationAggregatorName raju).Configuration | ConvertFrom-Json

輸出:

{"description":"default VPC security group","groupName":"default","ipPermissions":[{"ipProtocol":"-1","ipv6Ranges":[],"prefixListIds":[],"userIdGroupPairs":[{"groupId":"sg-4fc1d234","userId":"123456789012"}],"ipv4Ranges":[],"ipRanges":[]},{"fromPort":3389,"ipProtocol":"tcp","ipv6Ranges":[],"prefixListIds":[],"toPort":3389,"userIdGroupPairs":[],"ipv4Ranges":[{"cidrIp":"54.240.197.224/29","description":"office subnet"},{"cidrIp":"72.21.198.65/32","description":"home pc"}],"ipRanges":["54.240.197.224/29","72.21.198.65/32"]}],"ownerId":"123456789012","groupId":"sg-4fc1d234","ipPermissionsEgress":[{"ipProtocol":"-1","ipv6Ranges":[],"prefixListIds":[],"userIdGroupPairs":[],"ipv4Ranges":[{"cidrIp":"0.0.0.0/0"}],"ipRanges":["0.0.0.0/0"]}],"tags":[],"vpcId":"vpc-2d1c2e34"}

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

for PowerShell 工具

範例 1:此範例會擷取特定彙總器中存在的資源 (已識別) 的目前組態項目。

$resIdentifier=[Amazon.ConfigService.Model.AggregateResourceIdentifier]@{ ResourceId= "i-012e3cb4df567e8aa" ResourceName = "arn:aws:ec2:eu-west-1:123456789012:instance/i-012e3cb4df567e8aa" ResourceType = [Amazon.ConfigService.ResourceType]::AWSEC2Instance SourceAccountId = "123456789012" SourceRegion = "eu-west-1" } Get-CFGAggregateResourceConfigBatch -ResourceIdentifier $resIdentifier -ConfigurationAggregatorName raju

輸出:

BaseConfigurationItems UnprocessedResourceIdentifiers ---------------------- ------------------------------ {} {arn:aws:ec2:eu-west-1:123456789012:instance/i-012e3cb4df567e8aa}

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

for PowerShell 工具

範例 1:此範例會擷取授予彙總器的授權。

Get-CFGAggregationAuthorizationList

輸出:

AggregationAuthorizationArn AuthorizedAccountId AuthorizedAwsRegion CreationTime --------------------------- ------------------- ------------------- ------------ arn:aws:config-service:eu-west-1:123456789012:aggregation-authorization/123456789012/eu-west-1 123456789012 eu-west-1 8/26/2019 12:55:27 AM

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

for PowerShell 工具

範例 1:此範例會擷取 rule ebs-optimized-instance 的合規詳細資訊,而該規則目前沒有評估結果,因此會傳回 INSUFFICIENT_DATA

(Get-CFGComplianceByConfigRule -ConfigRuleName ebs-optimized-instance).Compliance

輸出:

ComplianceContributorCount ComplianceType -------------------------- -------------- INSUFFICIENT_DATA

範例 2:此範例會傳回規則 ALB_HTTP_TO_HTTPS_REDIRECTION_CHECK 的不合規資源數目。

(Get-CFGComplianceByConfigRule -ConfigRuleName ALB_HTTP_TO_HTTPS_REDIRECTION_CHECK -ComplianceType NON_COMPLIANT).Compliance.ComplianceContributorCount

輸出:

CapExceeded CappedCount ----------- ----------- False 2

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

for PowerShell 工具

範例 1:此範例會檢查「COMPLIANT」合規類型的AWS::SSM::ManagedInstanceInventory資源類型。

Get-CFGComplianceByResource -ComplianceType COMPLIANT -ResourceType AWS::SSM::ManagedInstanceInventory

輸出:

Compliance ResourceId ResourceType ---------- ---------- ------------ Amazon.ConfigService.Model.Compliance i-0123bcf4b567890e3 AWS::SSM::ManagedInstanceInventory Amazon.ConfigService.Model.Compliance i-0a1234f6f5d6b78f7 AWS::SSM::ManagedInstanceInventory

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

for PowerShell 工具

範例 1:此範例會取得 rule access-keys-rotated 的評估結果,並傳回依合規類型分組的輸出

Get-CFGComplianceDetailsByConfigRule -ConfigRuleName access-keys-rotated | Group-Object ComplianceType

輸出:

Count Name Group ----- ---- ----- 2 COMPLIANT {Amazon.ConfigService.Model.EvaluationResult, Amazon.ConfigService.Model.EvaluationResult} 5 NON_COMPLIANT {Amazon.ConfigService.Model.EvaluationResult, Amazon.ConfigService.Model.EvaluationResult, Amazon.ConfigService.Model.EvaluationRes...

範例 2:此範例會查詢 rule access-keys-rotated for COMPLIANT 資源的合規詳細資訊。

Get-CFGComplianceDetailsByConfigRule -ConfigRuleName access-keys-rotated -ComplianceType COMPLIANT | ForEach-Object {$_.EvaluationResultIdentifier.EvaluationResultQualifier}

輸出:

ConfigRuleName ResourceId ResourceType -------------- ---------- ------------ access-keys-rotated BCAB1CDJ2LITAPVEW3JAH AWS::IAM::User access-keys-rotated BCAB1CDJ2LITL3EHREM4Q AWS::IAM::User

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

for PowerShell 工具

範例 1:指定資源的此範例排空結果。

Get-CFGComplianceDetailsByResource -ResourceId ABCD5STJ4EFGHIVEW6JAH -ResourceType 'AWS::IAM::User'

輸出:

Annotation : ComplianceType : COMPLIANT ConfigRuleInvokedTime : 8/25/2019 11:34:56 PM EvaluationResultIdentifier : Amazon.ConfigService.Model.EvaluationResultIdentifier ResultRecordedTime : 8/25/2019 11:34:56 PM ResultToken :

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

for PowerShell 工具

範例 1:此範例會傳回不合規的 Config 規則數目。

Get-CFGComplianceSummaryByConfigRule -Select ComplianceSummary.NonCompliantResourceCount

輸出:

CapExceeded CappedCount ----------- ----------- False 9

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

for PowerShell 工具

範例 1:此範例會傳回合規或不合規的資源數目,並將輸出轉換為 json。

Get-CFGComplianceSummaryByResourceType -Select ComplianceSummariesByResourceType.ComplianceSummary | ConvertTo-Json { "ComplianceSummaryTimestamp": "2019-12-14T06:14:49.778Z", "CompliantResourceCount": { "CapExceeded": false, "CappedCount": 2 }, "NonCompliantResourceCount": { "CapExceeded": true, "CappedCount": 100 } }

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

for PowerShell 工具

範例 1:此範例會列出具有所選屬性的帳戶組態規則。

Get-CFGConfigRule | Select-Object ConfigRuleName, ConfigRuleId, ConfigRuleArn, ConfigRuleState

輸出:

ConfigRuleName ConfigRuleId ConfigRuleArn ConfigRuleState -------------- ------------ ------------- --------------- ALB_REDIRECTION_CHECK config-rule-12iyn3 arn:aws:config-service:eu-west-1:123456789012:config-rule/config-rule-12iyn3 ACTIVE access-keys-rotated config-rule-aospfr arn:aws:config-service:eu-west-1:123456789012:config-rule/config-rule-aospfr ACTIVE autoscaling-group-elb-healthcheck-required config-rule-cn1f2x arn:aws:config-service:eu-west-1:123456789012:config-rule/config-rule-cn1f2x ACTIVE
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 DescribeConfigRules

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

for PowerShell 工具

範例 1:此範例會傳回指定組態規則的狀態資訊。

Get-CFGConfigRuleEvaluationStatus -ConfigRuleName root-account-mfa-enabled, vpc-flow-logs-enabled

輸出:

ConfigRuleArn : arn:aws:config:eu-west-1:123456789012:config-rule/config-rule-kvq1wk ConfigRuleId : config-rule-kvq1wk ConfigRuleName : root-account-mfa-enabled FirstActivatedTime : 8/27/2019 8:05:17 AM FirstEvaluationStarted : True LastErrorCode : LastErrorMessage : LastFailedEvaluationTime : 1/1/0001 12:00:00 AM LastFailedInvocationTime : 1/1/0001 12:00:00 AM LastSuccessfulEvaluationTime : 12/13/2019 8:12:03 AM LastSuccessfulInvocationTime : 12/13/2019 8:12:03 AM ConfigRuleArn : arn:aws:config:eu-west-1:123456789012:config-rule/config-rule-z1s23b ConfigRuleId : config-rule-z1s23b ConfigRuleName : vpc-flow-logs-enabled FirstActivatedTime : 8/14/2019 6:23:44 AM FirstEvaluationStarted : True LastErrorCode : LastErrorMessage : LastFailedEvaluationTime : 1/1/0001 12:00:00 AM LastFailedInvocationTime : 1/1/0001 12:00:00 AM LastSuccessfulEvaluationTime : 12/13/2019 7:12:01 AM LastSuccessfulInvocationTime : 12/13/2019 7:12:01 AM

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

for PowerShell 工具

範例 1:此範例會傳回區域/帳戶的所有彙總器。

Get-CFGConfigurationAggregatorList

輸出:

AccountAggregationSources : {Amazon.ConfigService.Model.AccountAggregationSource} ConfigurationAggregatorArn : arn:aws:config-service:eu-west-1:123456789012:config-aggregator/config-aggregator-xabca1me ConfigurationAggregatorName : IrelandMaster CreationTime : 8/25/2019 11:42:39 PM LastUpdatedTime : 8/25/2019 11:42:39 PM OrganizationAggregationSource : AccountAggregationSources : {} ConfigurationAggregatorArn : arn:aws:config-service:eu-west-1:123456789012:config-aggregator/config-aggregator-qubqabcd ConfigurationAggregatorName : raju CreationTime : 8/11/2019 8:39:25 AM LastUpdatedTime : 8/11/2019 8:39:25 AM OrganizationAggregationSource : Amazon.ConfigService.Model.OrganizationAggregationSource

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

for PowerShell 工具

範例 1:此範例會顯示指定彙總器中來源的請求欄位。

Get-CFGConfigurationAggregatorSourcesStatus -ConfigurationAggregatorName raju | select SourceType, LastUpdateStatus, LastUpdateTime, SourceId

輸出:

SourceType LastUpdateStatus LastUpdateTime SourceId ---------- ---------------- -------------- -------- ORGANIZATION SUCCEEDED 12/31/2019 7:45:06 AM Organization ACCOUNT SUCCEEDED 12/31/2019 7:09:38 AM 612641234567 ACCOUNT SUCCEEDED 12/31/2019 7:12:53 AM 933301234567 ACCOUNT SUCCEEDED 12/31/2019 7:18:10 AM 933301234567 ACCOUNT SUCCEEDED 12/31/2019 7:25:17 AM 933301234567 ACCOUNT SUCCEEDED 12/31/2019 7:25:49 AM 612641234567 ACCOUNT SUCCEEDED 12/31/2019 7:26:11 AM 612641234567

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

for PowerShell 工具

範例 1:此範例會傳回組態記錄器的詳細資訊。

Get-CFGConfigurationRecorder | Format-List

輸出:

Name : default RecordingGroup : Amazon.ConfigService.Model.RecordingGroup RoleARN : arn:aws:iam::123456789012:role/aws-service-role/config.amazonaws.com/AWSServiceRoleForConfig

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

for PowerShell 工具

範例 1:此範例會傳回組態記錄器的狀態。

Get-CFGConfigurationRecorderStatus

輸出:

LastErrorCode : LastErrorMessage : LastStartTime : 10/11/2019 10:13:51 AM LastStatus : Success LastStatusChangeTime : 12/31/2019 6:14:12 AM LastStopTime : 10/11/2019 10:13:46 AM Name : default Recording : True

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

for PowerShell 工具

範例 1:此範例會列出所有一致性套件。

Get-CFGConformancePack

輸出:

ConformancePackArn : arn:aws:config:eu-west-1:123456789012:conformance-pack/dono/conformance-pack-p0acq8bpz ConformancePackId : conformance-pack-p0acabcde ConformancePackInputParameters : {} ConformancePackName : dono CreatedBy : DeliveryS3Bucket : kt-ps-examples DeliveryS3KeyPrefix : LastUpdateRequestedTime : 12/31/2019 8:45:31 AM

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

for PowerShell 工具

範例 1:此範例會擷取區域的交付管道,並顯示詳細資訊。

Get-CFGDeliveryChannel -Region eu-west-1 | Select-Object Name, S3BucketName, S3KeyPrefix, @{N="DeliveryFrequency";E={$_.ConfigSnapshotDeliveryProperties.DeliveryFrequency}}

輸出:

Name S3BucketName S3KeyPrefix DeliveryFrequency ---- ------------ ----------- ----------------- default config-bucket-NA my TwentyFour_Hours

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

for PowerShell 工具

範例 1:此範例會列出指定資源的相關標籤

Get-CFGResourceTag -ResourceArn $rules[0].ConfigRuleArn

輸出:

Key Value --- ----- Version 1.3
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 ListTagsForResource

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

for PowerShell 工具

範例 1:此範例會移除指定的一致性套件,以及套件的所有規則、修復動作和評估結果。

Remove-CFGConformancePack -ConformancePackName dono

輸出:

Confirm Are you sure you want to perform this action? Performing the operation "Remove-CFGConformancePack (DeleteConformancePack)" on target "dono". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): Y
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 DeleteConformancePack

下列程式碼範例示範如何使用 Write-CFGConformancePack

for PowerShell 工具

範例 1:此範例會建立一致性套件,從指定的 yaml 檔案擷取範本。

Write-CFGConformancePack -ConformancePackName dono -DeliveryS3Bucket amzn-s3-demo-bucket -TemplateBody (Get-Content C:\windows\temp\template.yaml -Raw)
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 PutConformancePack

下列程式碼範例示範如何使用 Write-CFGDeliveryChannel

for PowerShell 工具

範例 1:此範例會變更現有交付管道的 deliveryFrequency 屬性。

Write-CFGDeliveryChannel -ConfigSnapshotDeliveryProperties_DeliveryFrequency TwentyFour_Hours -DeliveryChannelName default -DeliveryChannel_S3BucketName amzn-s3-demo-bucket -DeliveryChannel_S3KeyPrefix my
  • 如需 API 詳細資訊,請參閱 AWS Tools for PowerShell Cmdlet 參考中的 PutDeliveryChannel