Anonymous
HTTPD на изображении Amazon Linux возвращает 403
Сообщение
Anonymous » 16 май 2024, 07:15
Я развертываю AutoScalingGroup с EC2, используя образ AMAZON Linux, и устанавливаю на него httpd. Но он возвращает 403, когда мы отправляем Curl на
http://localhost
.
Код: Выделить всё
sh-4.2$ curl http://localhost -I
HTTP/1.1 403 Forbidden
Date: Thu, 16 May 2024 04:12:52 GMT
Server: Apache/2.4.59 ()
Upgrade: h2,h2c
Connection: Upgrade
Last-Modified: Mon, 22 Apr 2024 13:06:15 GMT
ETag: "e2e-616af1a347fc0"
Accept-Ranges: bytes
Content-Length: 3630
Content-Type: text/html; charset=UTF-8
Я развернул этот стек с помощью AWS CDK, код приведен ниже.
Код: Выделить всё
from aws_cdk import (
# Duration,
Stack,
CfnOutput,
aws_ec2 as _ec2,
aws_iam as _iam,
aws_autoscaling as _autoscaling,
aws_elasticloadbalancingv2 as _elbv2,
# aws_sqs as sqs,
)
from constructs import Construct
class WebServerStack(Stack):
def __init__(self, scope: Construct, construct_id: str, vpc, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
# Read bootstrap script
with open("bootstrap_scripts/install_httpd.sh",
mode="r") as fp:
user_data = fp.read()
# Get latest ami
amzn_linux_ami = _ec2.AmazonLinuxImage(
generation=_ec2.AmazonLinuxGeneration.AMAZON_LINUX_2,
edition=_ec2.AmazonLinuxEdition.STANDARD,
storage=_ec2.AmazonLinuxStorage.GENERAL_PURPOSE,
virtualization=_ec2.AmazonLinuxVirt.HVM,
)
# Create Application load balancer
alb = _elbv2.ApplicationLoadBalancer(
self,
"myAlbId",
vpc=vpc,
internet_facing=True,
load_balancer_name="WebServerAlb",
)
# Allow from internet
alb.connections.allow_from_any_ipv4(
_ec2.Port.tcp(80),
description="Allow Internet access on ALB Port 80",
)
# Add listener to ALB
listener = alb.add_listener("listenerId",
port=80,
open=True)
# Webserver IAM role
web_server_role = _iam.Role(
self,
"webServerRoleId",
assumed_by=_iam.ServicePrincipal("ec2.amazonaws.com"),
managed_policies=[
_iam.ManagedPolicy.from_aws_managed_policy_name(
'AmazonSSMManagedInstanceCore'
),
_iam.ManagedPolicy.from_aws_managed_policy_name(
'AmazonS3ReadOnlyAccess'
),
]
)
# Create AutoScaling Group with 2 EC2 Instances
web_server_asg = _autoscaling.AutoScalingGroup(
self,
"webServerAsgId",
vpc=vpc,
vpc_subnets=_ec2.SubnetSelection(
subnet_type=_ec2.SubnetType.PRIVATE_WITH_EGRESS,
),
instance_type=_ec2.InstanceType(
instance_type_identifier="t2.micro"
),
machine_image=amzn_linux_ami,
role=web_server_role,
min_capacity=2,
max_capacity=2,
# desired_capacity=2,
user_data=_ec2.UserData.custom(
user_data
)
)
# Allow ASG Security Group receive traffic from ALB
web_server_asg.connections.allow_from(
alb,
_ec2.Port.tcp(80),
description="Allow ASG Security Group receive traffic from ALB"
)
listener.add_targets(
"listenerId",
port=80,
targets=[web_server_asg]
)
# Output of the ALB Domain Name
output_alb_1 = CfnOutput(
self,
"albDomainName",
value=f"http://{alb.load_balancer_dns_name}",
description="Web Server ALB Domain Name"
)
файл install_httpd.sh имеет содержимое ниже
bootstrap_scripts/install_httpd.sh
Код: Выделить всё
#!/bin/bash
sudo yum install -y httpd
sudo chkconfig httpd on
sudo service httpd start
ничего необычного, но все равно не знаете, почему он возвращает 403?
Подробнее здесь:
https://stackoverflow.com/questions/784 ... return-403
1715832942
Anonymous
Я развертываю AutoScalingGroup с EC2, используя образ AMAZON Linux, и устанавливаю на него httpd. Но он возвращает 403, когда мы отправляем Curl на http://localhost .[code]sh-4.2$ curl http://localhost -I HTTP/1.1 403 Forbidden Date: Thu, 16 May 2024 04:12:52 GMT Server: Apache/2.4.59 () Upgrade: h2,h2c Connection: Upgrade Last-Modified: Mon, 22 Apr 2024 13:06:15 GMT ETag: "e2e-616af1a347fc0" Accept-Ranges: bytes Content-Length: 3630 Content-Type: text/html; charset=UTF-8 [/code] Я развернул этот стек с помощью AWS CDK, код приведен ниже. [code]from aws_cdk import ( # Duration, Stack, CfnOutput, aws_ec2 as _ec2, aws_iam as _iam, aws_autoscaling as _autoscaling, aws_elasticloadbalancingv2 as _elbv2, # aws_sqs as sqs, ) from constructs import Construct class WebServerStack(Stack): def __init__(self, scope: Construct, construct_id: str, vpc, **kwargs) -> None: super().__init__(scope, construct_id, **kwargs) # Read bootstrap script with open("bootstrap_scripts/install_httpd.sh", mode="r") as fp: user_data = fp.read() # Get latest ami amzn_linux_ami = _ec2.AmazonLinuxImage( generation=_ec2.AmazonLinuxGeneration.AMAZON_LINUX_2, edition=_ec2.AmazonLinuxEdition.STANDARD, storage=_ec2.AmazonLinuxStorage.GENERAL_PURPOSE, virtualization=_ec2.AmazonLinuxVirt.HVM, ) # Create Application load balancer alb = _elbv2.ApplicationLoadBalancer( self, "myAlbId", vpc=vpc, internet_facing=True, load_balancer_name="WebServerAlb", ) # Allow from internet alb.connections.allow_from_any_ipv4( _ec2.Port.tcp(80), description="Allow Internet access on ALB Port 80", ) # Add listener to ALB listener = alb.add_listener("listenerId", port=80, open=True) # Webserver IAM role web_server_role = _iam.Role( self, "webServerRoleId", assumed_by=_iam.ServicePrincipal("ec2.amazonaws.com"), managed_policies=[ _iam.ManagedPolicy.from_aws_managed_policy_name( 'AmazonSSMManagedInstanceCore' ), _iam.ManagedPolicy.from_aws_managed_policy_name( 'AmazonS3ReadOnlyAccess' ), ] ) # Create AutoScaling Group with 2 EC2 Instances web_server_asg = _autoscaling.AutoScalingGroup( self, "webServerAsgId", vpc=vpc, vpc_subnets=_ec2.SubnetSelection( subnet_type=_ec2.SubnetType.PRIVATE_WITH_EGRESS, ), instance_type=_ec2.InstanceType( instance_type_identifier="t2.micro" ), machine_image=amzn_linux_ami, role=web_server_role, min_capacity=2, max_capacity=2, # desired_capacity=2, user_data=_ec2.UserData.custom( user_data ) ) # Allow ASG Security Group receive traffic from ALB web_server_asg.connections.allow_from( alb, _ec2.Port.tcp(80), description="Allow ASG Security Group receive traffic from ALB" ) listener.add_targets( "listenerId", port=80, targets=[web_server_asg] ) # Output of the ALB Domain Name output_alb_1 = CfnOutput( self, "albDomainName", value=f"http://{alb.load_balancer_dns_name}", description="Web Server ALB Domain Name" ) [/code] файл install_httpd.sh имеет содержимое ниже [b]bootstrap_scripts/install_httpd.sh[/b] [code]#!/bin/bash sudo yum install -y httpd sudo chkconfig httpd on sudo service httpd start [/code] ничего необычного, но все равно не знаете, почему он возвращает 403? Подробнее здесь: [url]https://stackoverflow.com/questions/78487544/httpd-on-amazon-linux-image-return-403[/url]