一些 AWS 证书具有此颁发者:
issuer=C=US, O=Amazon, CN=Amazon RSA 2048 M02
其他人有这个:
issuer=C=US, O=Amazon, CN=Amazon RSA 2048 M03
它们之间有什么区别?
一些 AWS 证书具有此颁发者:
issuer=C=US, O=Amazon, CN=Amazon RSA 2048 M02
其他人有这个:
issuer=C=US, O=Amazon, CN=Amazon RSA 2048 M03
它们之间有什么区别?
我们有一个 Web 服务,其前端被拆分为多个应用程序,由云端端点提供。这些应用程序目前都有自己的子域,例如 service-a.mydomain.com、service-b.mydomain.com 等。
然而,如今子域名几乎对谷歌如何建立域名权威没有影响,域名权威已经成为 SEO 的圣杯。因此,为了搜索引擎优化的目的,我们希望将所有内容移至顶级域名中的路径。因此,之后应该是 mydomain.com/service-a、mydomain.com/service-b 等。
显然,这似乎需要一个代理,如 API 网关或类似的东西,来路由所有内容。问题是……如果所有内容都通过同一个代理,那么 cloudfront(或任何其他 CDN)的主要优势就几乎消失了。当然,你可以在代理后面运行它,但你只有一个缓存。再见边缘位置。那时,将缓存放在代理本身中确实更有意义。
所以我的问题是,如果我不能为每个端点提供自己的子域,是否还有某种方法可以利用 Cloudfront 边缘位置?或者这种域设计方式是否只需要放弃 CDN 的优势?
我有一个 ECS 集群(在 Fargate 上1.4.0
),其中包含许多任务和服务,它们都登录到 Cloudwatch,一切正常。我有几个 ECS 计划任务(通过 EventBridge),我知道它们会按预期在计划时间运行。我知道这一点是因为 a) 我可以在 EventBridge 规则监控选项卡中看到它,并且 b) 计划任务之一的工作是发送电子邮件,我收到了该电子邮件。那么它正在运行,但不会像其他任务一样登录到 CloudWatch 吗?
在我开始故障排除步骤之前,让我给你提供更多见解:
在每个任务定义中,我都有这个日志块:
logConfiguration = {
logDriver = "awslogs"
options = {
awslogs-group = aws_cloudwatch_log_group.ecs_log_group.name
awslogs-region = "us-east-1"
awslogs-stream-prefix = "prod-cron-engage"
}
}
我知道那里的一切都是正确的,因为我的其他未安排的任务(通过服务全天候运行)都已成功记录在那里。
每个任务都有以下两个参数:
execution_role_arn = aws_iam_role.ecs_task_execution_role.arn
task_role_arn = aws_iam_role.ecs_task_execution_role.arn
这些都是:
resource "aws_iam_role" "ecs_task_execution_role" {
name = "ecsTaskExecutionRole"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = "sts:AssumeRole"
Effect = "Allow"
Principal = {
Service = "ecs-tasks.amazonaws.com"
}
}
]
})
tags = {
"Name" = "${var.name_prefix}-iam-ecs-role"
}
}
resource "aws_iam_role_policy_attachment" "ecs_task_execution_role_policy" {
role = aws_iam_role.ecs_task_execution_role.name
policy_arn = "arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"
}
其中AmazonECSTaskExecutionRolePolicy
,有针对 ECS 的基本策略,包括访问 CloudWatch。
另外,这是我的事件桥规则:
resource "aws_cloudwatch_event_rule" "prod_cron_engage_rule" {
name = "prod-engage-rule"
description = "Run Prod Engage task every 30 minutes."
schedule_expression = "rate(30 minutes)"
}
resource "aws_cloudwatch_event_target" "prod_cron_engage_target" {
target_id = "run-prod-engage-task-every-half-an-hour"
rule = aws_cloudwatch_event_rule.prod_cron_engage_rule.name
arn = aws_ecs_cluster.ecs_cluster.arn
role_arn = aws_iam_role.eventbridge_role.arn
ecs_target {
task_definition_arn = aws_ecs_task_definition.prod_cron_engage_task.arn
task_count = 1
launch_type = "FARGATE"
network_configuration {
subnets = module.vpc.private_subnets
security_groups = [aws_security_group.ecs_sg.id]
assign_public_ip = false
}
tags = {
"Name" = "${var.name_prefix}-ecs-prod-cron-engage"
}
}
}
以下是 EventBridge 角色和策略:
resource "aws_iam_role" "eventbridge_role" {
name = "eventbridge-ecs-role"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = "sts:AssumeRole"
Principal = {
Service = "events.amazonaws.com"
}
Effect = "Allow"
Sid = ""
}
]
})
}
resource "aws_iam_role_policy" "eventbridge_policy" {
name = "eventbridge-ecs-policy"
role = aws_iam_role.eventbridge_role.id
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = "ecs:RunTask"
Effect = "Allow"
Resource = [
aws_ecs_task_definition.prod_cron_engage_task.arn
]
},
{
Action = "iam:PassRole"
Effect = "Allow"
Resource = aws_iam_role.eventbridge_role.arn
}
]
})
}
我到目前为止做了什么?
起初,我以为也许存在某种限制规则,拒绝这些计划任务访问 CloudWatch(不太可能,但我想既然它们现在已通过 EventBridge 进行安排,也许这是可能的),所以我授予 ECS 和 EventBridge 完全的 CloudWatch 访问权限。什么都没有改变。
我尝试创建一个具有这些广泛权限的新日志组,并查看任务是否可以创建该新日志组。新日志组不存在,因此无法通过任务定义创建日志组。
我有一个扩展组 (ASG),用于使实例为执行任务做好准备。需要时,实例会与 ASG 分离,并且 ASG 会在需要时启动另一个实例。
实例类型为 c6g.4xlarge。操作系统为 ubuntu 22.04
下面是显示启动时间的日志。
systemd[1]: Startup finished in 4.850s (kernel) + 42min 16.004s (userspace) = 42min 20.854s.
我可以看到多个这样的失败的 SSM 日志
ERROR [Registrar] failed to register identity: error calling RegisterManagedInstance API: RequestError: send request failed
caused by: Post "https://ssm.us-xxxx-x.amazonaws.com/": dial tcp xx.xx.xx.xx:xx: i/o timeout
INFO [Registrar] sleeping for 18.7 minutes before retrying registration
这种情况只发生在百分之几的情况下,我无法找出其中的规律。
我有一个应用程序,我正在使用 AWS 来运行它。我有两个实例。一个已停止,一个正在运行。每个实例都附加了一个卷。我想终止已停止的实例,但我想确保它不会影响应用程序。我的假设是,已停止的实例不会影响应用程序,因为它已停止。
我目前还没有做任何事情,因为我不想弄乱这个应用程序。
我有 3 个实例(node-0
,, )运行 2node-1
个node-2
服务 - 一个是 a websocket
,另一个是 an API
(两个服务在每个实例中运行)。
目标群体设置:
目标群体 | 实例 | 健康检查路径 |
---|---|---|
api-节点-0 | 节点-0 | /某些路径/api/v1/ping |
api-节点-1 | 节点 1 | /某些路径/api/v1/ping |
api-节点-2 | 节点2 | /某些路径/api/v1/ping |
websocket-节点-0 | 节点-0 | /某些路径/websocket/v1/ping |
websocket-节点-1 | 节点 1 | /某些路径/websocket/v1/ping |
websocket-节点-2 | 节点2 | /某些路径/websocket/v1/ping |
听众和规则:
HTTPS:443 监听器
规则:
/some-path/api/*
/some-path/websocket/*
健康检查属性:
负载均衡器属性:
PS如果您需要有关设置的更多信息,请告诉我。
在所有目标组都健康的正常测试期间,ALB 似乎按预期运行。当我想模拟一个节点上的服务之一变得不健康的情况时,问题出现了,我更改了 ie 的运行状况检查路径api-node-1
,它显示为不健康(Error 404
),但流量仍在发送到它。通过访问日志和 CloudWatch 指标(RequestCountPerTarget
)确认。我还尝试模拟不健康的组,通过从实例中删除相关安全组来阻止 ALB 的访问。(Error 400
)
测试方法(针对不健康目标组):使用 curl(10-20 次)或 Grafana k6 负载测试并在访问日志和 Cloudwatch 中监控流量 - 流量仍然被路由到所有实例,其中一个实例显示为不健康。
您可以在此处找到讨论此问题的另一个问题的链接。
在处理跨账户数据副本时遇到了一些困难。具体来说,我正尝试将 S3 存储桶从一个 AWS 账户(在 中eu-west-1
)克隆到另一个 AWS 账户(在 中eu-west-2
)。
我已尝试按照本指南设置存储桶复制,添加复制批处理操作来复制现有文件,并且还按照本指南尝试了 DataSync 作业。
尽管严格遵循了指南:
复制指标显示没有活动,并且 24 小时后目标存储桶仍然为空。
复制批处理操作因原因而中止Job failure rate 100% is above 50%
。
DataSync 作业的 CloudWatch 日志仅提供以下详细信息:finished with status Unable to connect to S3 endpoint
我想知道我是否遗漏了指南中假设已经设置的一些先决条件;例如,在跨账户权限生效之前,是否需要在两个 AWS 账户之间建立某种信任关系?
即,帐户 987654321098 中的预期目标 S3 存储桶具有权限策略,其中包含此代码片段以识别源帐户中的操作角色:
"Sid": "DataSyncCreateS3LocationAndTaskAccess",
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::123456789012:role/source-account-datasync-s3-copy-role" }
..这就是目标账户信任来自其他账户的 IAM 角色所需要的全部内容吗?
对于aws EC2和aliyun实例或其他类似的云计算服务,虚拟机是否保证每次启动时都在同一台物理机上运行,或者它可能会从一台物理机迁移到另一台物理机?
我还知道虚拟机管理程序支持实时迁移,因此我正在运行的 aws/aliyun 实例是否有可能被服务提供商迁移,这可能会导致短时间中断或无响应。
我提出这个问题的原因是:我有一台阿里云服务器,从另一台 aws 服务器收集实时数据包流。每个数据包都有一个发送方时间戳标签。在接收方,接收方使用 (current_local_timestamp - sender_timestamp) 来获取经过的时间。通常这个经过的时间大约为 30~50ms,有时约为 100ms。但在极端情况下,这个经过的时间可能会长达几秒甚至超过 1 分钟,这种情况每月至少发生 2~3 次,通常是在星期五(但并非总是)或一些节假日。
我正在试图找出运输延误严重的原因。
0 我正在尝试使用 AWS 服务来构建我的项目,后端 Java 使用 Docker 作为容器并使用 Maven 作为依赖项,前端使用 Angular 16,现在我有一个带有 6 个子网的 VPC,其中两个是公共的。我有一个具有公共访问权限的 RDS 实例和一个与此 RDS 实例连接的免费套餐 EC2 实例,还没有测试这个连接,所以不确定它是否有效。我正在尝试在 EC2 中构建我的项目,一个带有多个 Java Maven 服务的 Docker Compose Up 命令,其中两个服务具有来自我的 CodeArtifact 存储库的依赖项,但它不仅无法访问此依赖项,即使我正确配置了 settings.xml,当我尝试在 EC2 内部运行它时,获取 CodeArtifact 令牌的命令也会以超时结束,但在我的本地机器上运行良好。我的安全组(即此 EC2 正在使用的安全组)对“0.0.0.0/0”和“::/0”上的所有协议都具有出站权限,并且我的 CodeArtifact 策略允许我的根用户和我的开发用户执行所有操作,我现在正在使用这两个用户。我做错了什么吗?我在这里看到这是可能的,但可能不再可能了?公共子网具有相同的 ACL 配置,尝试添加另一条规则以允许出站和入站流量,但没有成功!
尝试创建 IAM 角色,但同样失败!我创建了一个新实例,尝试了有 IAM 角色和没有 IAM 角色的情况,即使在附加 IAM 角色后,我也超时了!我设法截取了附加 IAM 角色之前和之后的屏幕截图