Hi, I am Ethan. This is my note.

页面跳转携带参数

父级页面跳转 { "type": "dropdown-button", "label": "服务和环境", "buttons": [ { "type": "button", "label": "服务管理", "onEvent": { "click": { "actions": [ { "ignoreError": false, "actionType": "url", "args": { "url": "/project/project/service", "params": { "project_id": "${id}" } } } ] } }, "id": "u:ed81ff6d4113" }, { "type": "button", "label": "环境管理", "onEvent": { "click": { "actions": [ { "ignoreError": false,... » read more

组件联动

具体的场景 服务器资源根据用户选择“项目”, “环境”, “区域”来刷新界面,同时选择“项目”会刷新“环境”的选项。 { "type": "container", "body": [ { "type": "picker", "label": "项目", "name": "project", "overflowConfig": { "maxTagCount": -1, "displayPosition": [ "select" ] }, "modalClassName": "app-popover :AMISCSSWrapper", "id": "u:2f60910808e0", "multiple": false, "embed": false, "modalMode": "drawer", "source": "/project/v1/project", "labelField": "name", "valueField": "resource_id", "onEvent": { "change": { "weight": 0, "actions": [ { // 被 action 的组件不要使用... » read more

gitlab package registry
gitlab package registry

前提: 有一个部署在 AWS ec2 实例上的 gitlab ,并有管理这个账号的相关权限。 开启 Package Registry, 并使用 S3 bucket ################################################################################ ## Package repository ##! Docs: https://docs.gitlab.com/ee/administration/packages/ ################################################################################ # gitlab_rails['packages_enabled'] = true # gitlab_rails['packages_storage_path'] = "/var/opt/gitlab/gitlab-rails/shared/packages" # gitlab_rails['packages_object_store_enabled'] = false # gitlab_rails['packages_object_store_proxy_download'] = false # gitlab_rails['packages_object_store_remote_directory'] = "packages" # gitlab_rails['packages_object_store_connection'] = { # 'provider' => 'AWS', # 'region' => 'eu-west-1', # 'aws_access_key_id'... » read more

Deploy ReplicaSet With Keyfile Authentication
Deploy ReplicaSet With Keyfile Authentication

Deploy ReplicaSet With Keyfile Authentication ① Create a keyfile openssl rand -base64 756 > mongodb.key # chmod 400 <path-to-keyfile> ② Copy the keyfile to each replica set member sudo mv mongodb.key /var/lib/mongodb sudo chown mongodb:mongodb /var/lib/mongodb/mongodb.key sudo chmod 400 /var/lib/mongodb/mongodb.key ③ Start each member of the replica set with access control enabled net: port: 27017... » read more

CloudFront – 限制访问 ALB

CloudFront – 限制访问 ALB 对于 Web 应用程序或由 Elastic Load Balancing 中的 ApplicationLoad Balancer 提供的其他内容,CloudFront 可以缓存对象并将它们直接提供给用户(查看者),从而减少 Application Load Balancer的负载。但是,如果用户可以绕过 CloudFront 并直接访问 Application Load Balancer,则无法获得这些益处。 但是,您可以配置 AmazonCloudFront 和 Application Load Balancer,以防止用户直接访问 Application Load Balancer。这使得用户只能通过 CloudFront 访问 Application Load Balancer,从而确保您获得使用 CloudFront 的益处。 1. 自定义 HTTP 标头 CloudFront – 限制访问 Application Load Balancer 要防止用户直接访问 Application Load Balancer 并仅允许通过 CloudFront... » read more

cloudfront实现nginx的行为

默认根对象 如果您定义默认根对象,最终用户对分配的子目录的请求不返回默认根对象。例如,假设 index.html 是您的默认根对象且 CloudFront 接收最终用户对 CloudFront 分配下的 install 目录的请求: https://d111111abcdef8.cloudfront.net/install/ CloudFront 不会返回默认根对象,即使 index.html 的副本出现在install目录中。 此时一个空资源作为文件被下载下来 这与我们常用的nginx目录访问明显的不同 实现与nginx类似的行为 以下示例函数会将 index.html 附加到不在 URL 中包含文件名或扩展名的请求中。此函数对于托管在 Amazon S3 存储桶中的单页应用程序或静态生成的网站非常有用。 在 GitHub 上查看此示例 function handler(event) { var request = event.request; var uri = request.uri; // Check whether the URI is missing a file name. if (uri.endsWith('/')) { request.uri +=... » read more

图片优化
图片优化

图像优化 基于 CloudFront、S3 和 Lambda 的客户管理型解决方案 图像优化的最常见使用案例根据用户浏览器功能自动设置格式,并允许前端调整图像大小。诸如 Next.JS 之类的流行 Web 开发框架提供响应式图像组件,这些组件可以根据设备视口自动选择图像大小。下图说明了这种常见使用案例的推荐架构: 用户向采用特定转换(例如,编码和大小)的图像发送 HTTP 请求。转换在 URL 中编码,更确切地说是作为查询参数。示例 URL 如下所示:https://exmaples.com/images/cats/mycat.jpg?format=webp&width=200。 请求由附近的 CloudFront 边缘站点处理,可提供最佳性能。在向上游传递请求之前,对查看器请求事件执行 CloudFront 函数以重写请求 URL。CloudFront Functions 是 CloudFront 的一项功能,它允许您使用 JavaScript 编写轻量级函数,以进行大规模的对延迟敏感的 CDN 自定义。在我们的架构中,我们重写 URL 以验证请求的转换,并通过排列转换顺序对 URL 进行标准化,然后将其转换为小写以提高缓存命中率。当请求自动转换时,该函数还会决定最适合应用哪种转换。例如,如果用户使用 format=auto 指令要求最优化的图像格式(JPEG、WebP 或 AVIF),则 CloudFront 函数将根据请求中存在的 Accept 标头选择最佳格式。 如果请求的图像已经缓存在 CloudFront 中,则缓存将被命中,并且图像将从 CloudFront 缓存中返回。为了提高缓存命中率,我们启用了 Origin Shield,这是 CloudFront 的一项功能,可在源服务器之前充当额外的缓存层,以进一步减轻请求负担。如果图像不在 CloudFront 缓存中,则请求将被转发到... » read more

sftp 限制用户目录访问
sftp 限制用户目录访问

sftp 登录到指定目录 修改 sshd 配置: /etc/ssh/sshd_config #Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp #修改为internal-sftp # Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server Match User test ChrootDirectory /sftpdata/test X11Forwarding no AllowTcpForwarding no PermitTTY no ForceCommand internal-sftp #指定sftp命令,ssh不可以登录 Match Group sftpgroup... » read more

push image to ecr
push image to ecr

我们将 docker 镜像仓库由 harbor 改成 AWS ECR,如何推送镜像? Retrieve an authentication token and authenticate your Docker client to your registry. Use the AWS CLI: aws ecr get-login-password --region ap-east-1 | docker login --username AWS --password-stdin <aws account>.dkr.ecr.<region>.amazonaws.com 如此我们不仅要改变原有 DSL 结构,并且还需要手动安装 aws cli , 还有安全凭证泄露的风险。 我们在不改变原有结构的情况下,同时兼容两种镜像仓库的管理呢? Amazon ECR 插件实现了 Docker Token 生成器,将 Amazon 凭证转换为 Jenkins 的 API,该... » read more