参考:为 Systems Manager 创建格式化的日期和时间字符串 - AWS Systems Manager

参考:为 Systems Manager 创建格式化的日期和时间字符串

AWS Systems Manager API 操作接受使用筛选条件来限制请求所返回的结果数量。其中一些 API 操作接受要求使用格式化字符串来表示特定日期和时间的筛选条件。例如,DescribeSessions API 操作接受 InvokedAfterInvokedBefore 键作为 SessionFilter 对象的一些有效值。再举个例子,DescribeAutomationExecutions API 操作接受 StartTimeBeforeStartTimeAfter 键作为 AutomationExecutionFilter 对象的一些有效值。您在筛选请求时为这些键提供的值必须符合 ISO 8601 标准。有关 ISO 8601 的信息,请参阅 ISO 8601

这些格式化的日期和时间字符串不限于筛选条件。在为请求参数提供值时,还有一些 API 操作要求使用 ISO 8601 格式化的字符串来表示特定的日期和时间。例如,GetCalendarState 操作的 AtTime 请求参数。这些字符串很难创建。使用本主题中的示例创建要用于 Systems Manager API 操作的格式化日期和时间字符串。

Systems Manager 的格式化日期和时间字符串

以下是 ISO 8601 格式化的日期和时间字符串的示例。

2024-05-08T15:16:43Z

这表示 2024 年 5 月 8 日 15 时 16 分(协调世界时(UTC))。字符串的日历日期部分由四位数年份、两位数月份和两位数日期表示(以连字符分隔)。这可以用以下格式表示。

YYYY-MM-DD

字符串的时间部分以字母“T”作为分隔符开头,然后用两位数小时、两位数分钟和两位数秒数表示(以冒号分隔)。这可以用以下格式表示。

hh:mm:ss

字符串的时间部分以字母“Z”结尾,表示 UTC 标准。

为 Systems Manager 创建自定义日期和时间字符串

您可以使用首选的命令行工具从本地计算机创建自定义日期和时间字符串。用于创建 ISO 8601 格式化的日期和时间字符串的语法因本地计算机的操作系统而异。以下示例说明如何从 Linux 上的 GNU coreutils(或 Windows 上的 PowerShell)使用 date 创建 ISO 8601 格式化的日期和时间字符串。

coreutils
date '+%Y-%m-%dT%H:%M:%SZ'
PowerShell
(Get-Date).ToString("yyyy-MM-ddTH:mm:ssZ")

使用 Systems Manager API 操作时,您可能需要创建历史日期和时间字符串,以进行报告或故障排除。以下是如何为 AWS Tools for PowerShell 和 AWS Command Line Interface (AWS CLI) 创建并使用自定义历史 ISO 8601 格式化的日期和时间字符串的示例。

AWS CLI
  • 检索 SSM 文档的最后一周命令历史记录。

    lastWeekStamp=$(date '+%Y-%m-%dT%H:%M:%SZ' -d '7 days ago') docFilter='{"key":"DocumentName","value":"AWS-RunPatchBaseline"}' timeFilter='{"key":"InvokedAfter","value":'\"$lastWeekStamp\"'}' commandFilters=[$docFilter,$timeFilter] aws ssm list-commands \ --filters $commandFilters
  • 检索最后一周的自动化执行历史记录。

    lastWeekStamp=$(date '+%Y-%m-%dT%H:%M:%SZ' -d '7 days ago') aws ssm describe-automation-executions \ --filters Key=StartTimeAfter,Values=$lastWeekStamp
  • 检索最后一个月的会话历史记录。

    lastWeekStamp=$(date '+%Y-%m-%dT%H:%M:%SZ' -d '30 days ago') aws ssm describe-sessions \ --state History \ --filters key=InvokedAfter,value=$lastWeekStamp
AWS Tools for PowerShell
  • 检索 SSM 文档的最后一周命令历史记录。

    $lastWeekStamp = (Get-Date).AddDays(-7).ToString("yyyy-MM-ddTH:mm:ssZ") $docFilter = @{ Key="DocumentName" Value="AWS-InstallWindowsUpdates" } $timeFilter = @{ Key="InvokedAfter" Value=$lastWeekStamp } $commandFilters = $docFilter,$timeFilter Get-SSMCommand ` -Filters $commandFilters
  • 检索最后一周的自动化执行历史记录。

    $lastWeekStamp = (Get-Date).AddDays(-7).ToString("yyyy-MM-ddTH:mm:ssZ") Get-SSMAutomationExecutionList ` -Filters @{Key="StartTimeAfter";Values=$lastWeekStamp}
  • 检索最后一个月的会话历史记录。

    $lastWeekStamp = (Get-Date).AddDays(-30).ToString("yyyy-MM-ddTH:mm:ssZ") Get-SSMSession ` -State History ` -Filters @{Key="InvokedAfter";Value=$lastWeekStamp}