AWS S3 上傳下載權限管理
本篇文章說明 AWS S3 的上傳下載方式,使用 postman 作為範例,設定限定上傳的權限,開放所有下載的權限
建立 Bucket
建立 Bucket
填入名稱、區域
其他使用預設值
建立資料夾
建立資料夾
填入名稱 BUCKET_FOLDER (e.g. images)
建立成功
建立 IAM 使用者
到 IAM 儀表板
點擊使用者
填入使用者名稱 IAM_UESRNAME (e.g. vis-trainet),並選擇 Access Key
附加現有的 Policy,選擇 S3 Full Access
Tag 留空
下一步
成功後會取得 Access key ID 和 Secret access key,後續會使用到
修改權限
修改 bucket setting,後面兩個選項關閉
修改 bucket policy
回到 IAM 取得 USER_ARN
貼上 statement 並取代為自己的 User ARN,上面是開啟 Get 權限給匿名使用者,下面是開啟 Put 權限給 IAM 使用者,更多設定 Principal 參考
1234567 ...
使用 Let's Encrypt 架設 HTTPS 伺服器 (NGINX)
本篇文章簡介 Let’s Encrypt 這個「證書頒發機構」(Certificate authority, CA),並使用他和 Nginx 架設 HTTPS 伺服器。
參考申請Let’s Encrypt 憑證與啟用 https (Nginx) 和官方文獻
Let’s Encrypt 介紹Let’s Encrypt 提供哪些服務Let’s Encrypt 是一家全球性的憑證頒發機構 (Certificate Authority, CA)Let’s Encrypt 提供域名驗證型憑證 (Domain Validation, DV)
如何設定 https 的流程流程分為兩個步驟:
管理軟體會先向 CA 證明伺服器擁有網域的所有權。
管理系統就可以替該網域申請、更新或註銷憑證。
證明網域的所有權憑證管理軟體: 自己的伺服器上的軟體
憑證管理軟體首次向 Let’s Encrypt 溝通
產生一組公私金鑰
向 CA 證明自己管理一或多個網域
Let’s Encrypt CA 會考驗
Let’s Encrypt 還提供了一個隨機,要求憑證管理軟體必須用它所產生的私鑰,對隨機數進行簽名
CA ...
在 Windows 安裝 OpenSSH
本篇文章參考官方文件在 Windows 安裝 SSH 伺服器
使用系統管理員身分執行 PowerShell開始搜尋 PowerShel,並按右鍵使用系統管理員身分執行
使用 PowerShell 安裝 OpenSSH12345# Install the OpenSSH ClientAdd-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0# Install the OpenSSH ServerAdd-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
啟動 OpenSSH 伺服器12# Start the sshd serviceStart-Service sshd
設定開機自動啟動伺服器參考連結
12# OPTIONAL but recommended:Set-Service -Name sshd -StartupType 'Automatic'
設定 SSH 伺服器防火牆1234567# Confirm the Firewall ...
NGINX 架設靜態檔案伺服器
本篇文章將會以 Ubuntu 架設一個 NGINX 的靜態檔案伺服器
NGINX 設定檔使用以下指令安裝完成 nginx
1apt install nginx
到 /etc/nginx 可以看到 nginx.conf 檔案,確認檔案包含 include。nginx.conf 就像是 main 程式,透過引用來分開不同域名的 conf。註解 sites-enabled/*
12include /etc/nginx/conf.d/*.conf; #include /etc/nginx/sites-enabled/*;
之後要在 /etc/nginx/conf.d/ 加入 config
設定自己的設定檔新增 /etc/nginx/conf.d/default.conf,並填入設定,以下設定檔作為範例
12345678910111213141516171819server { listen 8080; server_name _; index index.html; root /www/data; locat ...
環境變數介紹,以 Windows 10 為例
本篇文章以 Windows 的工作管理員和命令提示字元,介紹 Windows 環境變數。
程序 (Process)
環境變數
PATH 環境變數
程序 (Process)
程序是指程式載入記憶體之後被稱為程序,例如 Windows 的 cmd.exe 載入記憶體
在 Windows 中,工作管理員可以看到目前正在執行的程序,和更多細節。
程序識別碼 (Process Identifier, PID)、CPU、記憶體使用量等。
圖1 命令提示字元和程序
環境變數環境變數可以分為兩個部分解釋,環境和變數。
環境是指作業系統,Windows 是目前的環境,環境下的程序可以讀取環境變數。
變數視為是一個容器,可以裝入符合的內容,環境變數內容是文字,所以環境變數是可以裝各種文字的變數。
Windows 的環境變數
一個環境變數包含變數和值
變數: 環境變數的名稱
值: 環境變數的實際數值
圖2 Windows 環境變數
任何運作於作業系統的程序都可以讀取環境變數
以 cmd.exe 為例讀取環境變數
ECHO %OS%: 使用 ECH ...
Go 抽象類別範例
本篇文章介紹 Go 實作抽象類別的方法,其中包含 C# 作為一開始解釋目標的語言。
一個抽象類別的範例抽象類別 Animal
兩個類別,一個抽象類別 Animal;另一個實體類別 Person。
Animal 有兩個屬性,Name 和 Age
Animal 建構子包含兩個屬性的傳入
Animal 有一個已實作方法 GetInfo()
Animal 有一個未實作方法 SayHello()
123456789101112abstract class Animal { protected string Name; protected int Age; public abstract void SayHello(); public Animal(string name, int age) { Name = name; Age = age; } public string GetInfo() { return "Name: " + Name + " ...
Docker 執行 Image 成為 Container
本篇文章介紹執行 docker,參考官方文件
簡介Container 是作業系統中一個普通的程序,預期這個程序有獨立的檔案管理系統,獨立的網路,獨立的程序樹,跟本機作業系統不相關。使用 docker run 去執行 image,執行以下命令以運行 python-docker
1docker run python-docker
當你執行這個指令,你會發現這個指令並不會回傳,因為這是一個 REST Server,他會持續等待進來的請求直到 container 被關閉,我們可以開啟另一個 terminal 使用 GET Request 到伺服器,這個請求會被拒絕。這代表我們無法連到 localhost 的 port 5000,這是被預期的結果,因為 container 執行在獨立的網路環境
1curl localhost:5000
要在 container 公開 port,要使用 --publish 選項或 -p。--publish 的參數是 [host port]:[container port],所以當我們要從外部的 3000 port 轉到,內部的 5000 port,要設定 30 ...
Docker 建立 Python image
本篇文章介紹使用 Docker 建立 python image,參考官方文件
一個 image 包含所有運行程式的資源,例如: 程式碼或執行檔、運行環境、運行依賴套件、運行的需要檔案。
應用程式範例建立一個 python-docker 資料夾並使用以下指令運行程式
1234567cd /path/to/python-dockerpython3 -m venv .venvsource .venv/bin/activatepython3 -m pip install Flaskpython3 -m pip freeze > requirements.txttouch app.py
為 app.py 加入程式碼
123456from flask import Flaskapp = Flask(__name__)@app.route('/')def hello_world(): return 'Hello, Docker!'
測試應用程式範例使用以下指令運行程式
123cd /path/to/python-dockersource .ve ...
Docker 打包軟體
本篇文章介紹使用 Docker 打包軟體,參考官方文件
DockerfileDocker 藉由讀取 Dockerfile 裡面的指令建立 images。Dockerfile 是一個「文字檔」,使用特定的指令,將應用程式組裝在 container 中。Dockerfile 的規範格是可以參考 Docker Reference
底下提供一些常見指令:
Instruction
Description
FROM <image>
作為基礎的 Docker image
RUN <command>
在當前的 image 之上,添加一個 layer 並在之中執行命令,RUN 通常使用 shell form 格式運行
WORKDIR <directory>
設定工作路徑給任何指令,例如: RUN、CMD、ENTRYPOINT、COPY 和 ADD 等
COPY <src> <dest>
複製檔案或目錄,從主機的 <src> 位置,複製到 container 的 <dest> 位置
CMD &l ...
Docker 概念簡介
本篇文章介紹 Docker 的概念,參考官方文件
Docker 概念簡介Docker 是一個用於開發、部屬和執行程式的平台。他能讓「應用程式」和「基礎設施」(指運行應用程式的必須物件,例如: pip install -r requestments.txt 需要 requestments.txt) 分離。可以透過 Docker 達到「快速交付」、「測式」、「部屬」等需求,減少寫完程式後到部屬環境之間的延遲。Docker 是作業系統的虛擬化,虛擬機則是硬體的虛擬化,因此 Docker 基於 Host OS 建立自己的 Guest OS,使用同一個作業系統,所以速度相對於虛擬機更快。
Docker 平台Docker 提供一個具有打包能力,並且在鬆散的環境之下可運行應用程式的物件,稱為 Container。Container 無須依賴任何主機上的安裝內容,在具有隔離的環境中獨自執行。只要能確保每個人使用相同 Container,都會有相同的工作方式。
Docker 可以幫助什麼快速且一致性的交付應用程式Docker 提供一個標準的開發環境,藉此簡化開發流程,非常適合用在 CI/CD ...