我知道在大多数编程语言中浮点数并不是100%准确,但我刚才遇到了一个奇怪的问题.我还在学习Python,所以制作了一个简单的程序来计算尽可能少的硬币给出的变化.然而,当它达到0.02时,似乎无法给出2p硬币,而是将其分成2个1p硬币.代码段如下所示:
....
elif amountLeft / 0.02 >= 1:
changeGiven.append("2p")
amountLeft -= 0.02
else:
changeGiven.append("1p")
amountLeft -= 0.01
Run Code Online (Sandbox Code Playgroud)
我一直在看着它http://www.pythontutor.com并明确有0.02
在amountLeft
对任何事物的最后一次迭代,将转降低到.当我检查时,print 0.02 / 0.02 >= 1
我True
按预期回来了.
我在这里错过了什么明显的东西?
我不清楚Talend中使用tHash和tBuffer组件之间的区别.
我正在考虑在Impala表中存储tMap的结果以及在内存(缓存)中存储另一个副本,并对此执行其他转换以最终写入表.
在推送我的容器的新图像后,我使用Terraform apply来更新任务定义.这似乎工作正常,但在ECS服务任务列表中,我可以看到任务处于非活动状态,我有一个事件:
service blahblah was unable to place a task because no container instance met all of its requirements. The closest matching container-instance [guid here] is already using a port required by your task.
问题是,该网站仍然活跃和工作.
我正在尝试使用 terraform 配置 ECS 集群,在我创建 ecs 服务之前,一切似乎都运行良好:
resource "aws_ecs_service" "ecs-service" {
name = "ecs-service"
iam_role = "${aws_iam_role.ecs-service-role.name}"
cluster = "${aws_ecs_cluster.ecs-cluster.id}"
task_definition = "${aws_ecs_task_definition.my_cluster.family}"
desired_count = 1
load_balancer {
target_group_arn = "${aws_alb_target_group.ecs-target-group.arn}"
container_port = 80
container_name = "my_cluster"
}
}
Run Code Online (Sandbox Code Playgroud)
IAM 角色是:
resource "aws_iam_role" "ecs-service-role" {
name = "ecs-service-role"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
}
EOF
}
resource "aws_iam_role_policy_attachment" "ecs-service-role-attachment" {
role = "${aws_iam_role.ecs-service-role.name}" …
Run Code Online (Sandbox Code Playgroud) 创建main.tf
并执行后terraform apply
创建了以下文件:
我应该将这些文件添加到 Git 中吗?
我最近使用Cloudfront,S3和WAF测试并创建了一个UI。
我对Cloudfront模块进行了一些更改,并对创建的WAF ACL名称进行了硬编码,以便每次执行terraform apply
时都将使用我创建的WAF。然后,我从代码中删除了WAF模块。
当我尝试执行其他操作时,terraform apply
它说WAF将被销毁。我以为是因为删除了WAF模块。
有没有一种方法可以执行terraform plan
/ apply
跳过销毁先前部署中最近部署的WAF?
我正在使用Terraform在AWS中构建一些基础架构。我创建了几个S3存储桶,并希望Glue搜寻器每小时对这些存储桶进行一次爬网。我的Terraform Glue目录数据库,角色和策略都构建良好,但是当我尝试通过向爬网程序的s3_target{}
一部分添加四个S3路径来创建爬网程序资源时,出现了故障:
resource "aws_glue_crawler" "datalake_crawler" {
database_name = "${var.glue_db_name}"
name = "${var.crawler_name}"
role = "${aws_iam_role.glue.id}"
s3_target {
# count = "${length(var.data_source_path)}"
path = "${var.data_source_path}"#"${formatlist("%s", var.data_source_path)}"
}
}
Run Code Online (Sandbox Code Playgroud)
这会导致错误:
Error: aws_glue_crawler.datalake_crawler: s3_target.0.path must be a single value, not a list
Run Code Online (Sandbox Code Playgroud)
我尝试在中添加一条count
语句,s3_target
但这失败。我也尝试添加
"${formatlist("%s", var.data_source_path)}"
Run Code Online (Sandbox Code Playgroud)
在path
争论中,但这也失败了。
我可以s3
使用Terraform向Glue履带添加多个路径吗?我可以通过AWS控制台实现这一点,但这需要使用基础架构作为代码来完成。
amazon-s3 amazon-web-services terraform aws-glue terraform-provider-aws
当尝试使用 Terraform 设置某些 CloudWatch 警报时,由于某种原因,它找不到指标,并且警报仍然陷入数据不足的状态。Terraform 不会输出任何错误,如果我在 AWS 中手动搜索,我可以找到指标。我在这里缺少什么?
指向目标组的简单健康主机警报示例:
#healthy host alarm
resource "aws_cloudwatch_metric_alarm" "health" {
alarm_name = "${var.tag_app}_healthy_host"
comparison_operator = "LessThanThreshold"
evaluation_periods = "1"
metric_name = "HealthyHostCount"
namespace = "AWS/ApplicationELB"
period = "60"
statistic = "Maximum"
threshold = "1"
alarm_description = "Healthy host count for EC2 machine"
alarm_actions = ["${data.aws_sns_topic.blabla.arn}"]
ok_actions = ["${data.aws_sns_topic.blabla.arn}"]
dimensions = {
TargetGroup = "${aws_lb_target_group.alb_target.arn_suffix}"
}
}
Run Code Online (Sandbox Code Playgroud)
当我选择另一个资源(EC2、RDS)和另一个指标时,我会收到指向正确指标的 CloudWatch 警报,并且它不会陷入数据不足的困境。
amazon-web-services amazon-cloudwatch terraform terraform-provider-aws
我在 Terraform 中定义了一个资源来创建我不想安排的 Glue Crawler。但我希望它在创建和更新后运行。我在文档中找不到有关如何触发此操作的任何内容。
resource "aws_glue_crawler" "my_crawler" {
database_name = "my_db"
name = "my_crawler"
role = "arn:aws:iam::111111111111:role/service-role/someRole"
s3_target {
path = "s3://my_bucket/key/prefix"
}
}
Run Code Online (Sandbox Code Playgroud) amazon-web-services terraform aws-glue terraform-provider-aws
我正在使用 Terraform 创建 IAM 和 EC2,如下所示。
我想将一个名为ec2_role
EC2 实例配置文件的角色附加到该 EC2 实例配置文件中。但它似乎只能附加由 . 创建的一个aws_iam_instance_profile
。
resource "aws_instance" "this" {
# ..
iam_instance_profile = aws_iam_instance_profile.this.name
}
resource "aws_iam_instance_profile" "this" {
name = "ec2-profile"
role = aws_iam_role.ec2_role.name
}
Run Code Online (Sandbox Code Playgroud)
关于ec2_role
,它使用ec2_role_policy
. 但如果我设置source_json = data.aws_iam_policy.amazon_ssm_managed_instance_core.policy
为data "aws_iam_policy_document" "ec2_role_policy" {
,它会引发错误。
resource "aws_iam_role" "ec2_role" {
name = "ec2-role"
assume_role_policy = data.aws_iam_policy_document.ec2_role_policy.json
}
resource "aws_iam_policy" "ec2_policy" {
name = "ec2-policy"
policy = data.aws_iam_policy_document.ec2_use_role_policy.json
}
resource "aws_iam_role_policy_attachment" "attach" {
role = …
Run Code Online (Sandbox Code Playgroud) terraform ×8
amazon-iam ×2
aws-glue ×2
amazon-ec2 ×1
amazon-ecs ×1
amazon-s3 ×1
aws-ecs ×1
caching ×1
impala ×1
python ×1
talend ×1